これは、ほとんどの変数が int である多くの場合で機能しましたが、たとえば 45 に追加される 10 桁の数字をすべて見つけたい場合を除き、ゼロの出力が得られました。次に、すべての変数を long に変更して違いがあるかどうかを確認しましたが、違いはありませんでした。私が何をすべきか、または現在間違っているかについて何か考えはありますか?
どんな助けでも大歓迎です。
私のプログラムは次のとおりです。
long add_digits(long);
int main()
{
long digit, i, j, limit, l, n, sum=0, rem, result, counter=1;
printf("\nInput digits: ");
scanf("%d", &j);
printf("\nInput number: ");
scanf("%d", &i);
limit=pow(10,j);
for(n=1; n<limit; n++)
{
result = add_digits(n);
if(result==i)
counter++;
}
printf("\n%d\n", counter-1);
return 0;
}
long add_digits(long n)
{
static long sum = 0;
if (n == 0) {
return 0;
}
sum = n%10 + add_digits(n/10);
return sum;
}