arkadaşlar recursive fonksiyon ile bir işlem yapmaya çalışıyorum. yazdığım sayının rakamlarını 10'dan küçük olana kadar toplayacak.

mesela 9964 =>28 =>10 =>1

benim yaptığım ise düz olarak topluyor, yani 9964'ü 28 olarak yazıyor sadece. aşağıya kodumu yazıyorum, eklemem gereken satırı söylerseniz memnun olurum. teşekkürler.

#include <stdio.h>

int sum (int a);

int main()
{
int num, result;

printf("Sayiyi Girin: ");
scanf("%d", &num);
result = sum(num);
printf("yazdiginiz %d sayisinin rakamlari toplami %d\n", num, result);
return 0;
}

int sum (int num)
{
if (num != 0)
{
return (num % 10 + sum (num / 10));
}
else
{
return 0;
}
}

 

sum fonksiyonunun adını find_sum_of_digits yaptım, bunu verilen sayının rakamları toplamını bulmak için kullanırız.
yeni sum fonksiyonu da recursive olarak num'ı kontrol ediyor, num<10 ise işlemi sonlandırıyor. değilse de rakamları toplamını find_sum_of_digits ile bulup bu toplamla kendini çağırıyor.



#include <stdio.h>

int sum (int a);
int find_sum_of_digits(int a);

int main()
{
int num, result;

printf("Sayiyi Girin: ");

scanf("%d", &num);

result = find_sum_of_digits(num);

printf("yazdiginiz %d sayisinin rakamlari toplami %d\n", num, result);

printf("%d", sum(num));

return 0;
}

int find_sum_of_digits (int num)
{

if (num != 0)
{
return (num % 10 + find_sum_of_digits(num / 10));
}
else
{
return 0;
}
}

int sum (int num){

if (num < 10)
{

return num;
}
else
{
printf("%d => ", num);
sum(find_sum_of_digits(num));

}

}

edy

çok teşekkür ederim ilginiz için. sanırım kodda bir hata var, sürekli -2 döndürüyor. ben de bulamadım sorunu.

joffrey reis
1

mobil görünümden çık