以下是通过递归添加数字的数字来将给定数字减少到单个数字的代码。
例如,如果输入是845
输出8
。8+4+5 = 17 -> 1+7 = 8
(输出)
#include <stdio.h>
#define TRUE 1
int reduceToSingle(int numb);
int main()
{
int numb;
scanf("%d",&numb);
printf("Original = %d Single digit = %d\n", numb, reduceToSingle(numb));
return TRUE;
}
int reduceToSingle(int numb)
{
int sum = 0, digit = 0;
for (digit = numb % 10; numb != 0; numb = numb / 10)
{
digit = numb % 10;
sum += digit;
}
if (sum > 9)
reduceToSingle(sum);
else
return sum;
}
在上面的代码if (sum > 9)
块中,我没有返回函数值。我只是调用了该函数。从逻辑上讲,这个函数应该给出一个不正确的值。但是当我在我的系统中运行上述程序时,我得到了正确的输出数字总和。我无法理解这种行为背后的逻辑。