求解递归
问题描述:
为什么总是返回9加上答案的实际值。例如,对于数字1234,答案是1,但函数返回10.我不知道为什么是这种情况,我很确定这是与递归有关,但我不知道。求解递归
int fun(int n) {
if (n <= 9) {
return n;
} else {
return fun(n/10) + (n % 10);
}
}
答
至于诚表示,目前还不清楚为什么你认为答案应该是1,但是,如果你做的递归分析得到以下:
fn(1234) = fn(123) + 4 = 10
fn(123) = fn(12) + 3 = 6
fn(12) = fn(1) + 2 = 3
fn(1) = 1
因此,使用简单的替换,你会得到:
fn(1234) = 1 + 2 + 3 + 4 = 10
+0
谢谢编辑Pshemo;我正在修理它,尝试提交,但收到一条消息,指出您已经编辑过。感谢超级快速响应! :-) – ILoveCode
你相信你的答案*应该是1吗? – Makoto
看起来这种方法总结了数字的所有数字,即'10'。它应该做什么来返回'1'? – rgettman
我在这里看不到问题,输出很好。它返回上面提到的数字的总和。 – theVoid