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));
}
}


ç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.
