解决递归问题

时间:2016-04-21 19:47:04

标签: java recursion

为什么这总是返回9加上答案的实际值。所以例如,对于数字1234,答案是1但函数返回10.我不知道为什么会这样,我很确定它与递归有关但我不知道。

int fun(int n) {
    if (n <= 9) {
        return n;
    } else {
        return fun(n / 10) + (n % 10);
    }
}

1 个答案:

答案 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