为什么这总是返回9加上答案的实际值。所以例如,对于数字1234,答案是1但函数返回10.我不知道为什么会这样,我很确定它与递归有关但我不知道。
int fun(int n) {
if (n <= 9) {
return n;
} else {
return fun(n / 10) + (n % 10);
}
}
答案 0 :(得分:0)
正如Makoto所说,目前还不清楚为什么你认为答案应该是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