Tam sayılarla basit bir bölümleme yapmaya çalışıyorum. Bir dizi çıkarma kullanarak ve aynı zamanda özyinelemeyi kullanmaya çalışıyorum. Sadece toplama ve çıkarma işlemlerini kullanabilen bir bilgisayar kullanmayı hayal edin. Bir çarpma ve üstel yarattım, ama bölünmeyle en zor zamanları yaşıyorum. Herhangi bir yardım veya tavsiye uzun bir yol olacak!Bölüm için Rutin
#include<stdio.h>
int DIV(int m, int n){
if(m == 0){
return 0;
}
else if(n == 0){
return -1;
}
else if(n == 1){
return m;
}
else if(m > 0 && n > 0)
return DIV(m, n-1) - m;
} //exit
Bu benim kodum şu ana kadar, yalnızca bitiş ifadesinde yardıma ihtiyacım var. Ayrıca int m
, pay ve n
paydadır. Bu arada GNU C kullanıyorum.
else if (m < n)
return 0;
else
return 1 + DIV (m-n, n);
Ama bu kodun gerçekten sınırlı kaynaklarla bir makinede çalıştırmak istiyorsanız, bir süre döngü olarak uygulamalıdır:
Ve sorun şu ki ...? Crash? Yanlış sonuç? ...? İkinciyse, bazı değer örneklerini gösterin. Ve "GNU C" bir dil değil. – deviantfan
Teknik olarak, 0/0 hala tanımlanmamış, bu sorunun bir parçası değil ama eğer ilk önce eğer eğer, eğer payda 0 olursa, cevabınız her zaman tanımsız ise, ikincisini hareket ettirmelisiniz. – Stephen
eğer neye geri dönmek istersen bölünemez değil mi? ondalık kısmı varmış gibi. Ayrıca, m'den n'yi çıkararak ve sıfıra ulaşana kadar kaç kez çıkardığınızı saymak, toplama ve çıkarma işlemi dışında kullanmanıza izin verilmeyen tek yol olacaktır. –