public static void main(string[]args) {
system.out.println(sum5(10));
}
public static void sum5(int n) {
if (n == 0) return 0;
return sum5(n - 1) + n;
}
此功能的结果为55。 这种方法有什么作用?
答案 0 :(得分:1)
基本上这是从1到n的总和
sum5(3)
基本上计算(3 + 2 + 1)
想想它在计算机中的样子,我会用sum5(3)
call sum5(3)
1. n != 0 thus return sum5(2) + 3
2. n != 0 thus return sum5(1) + 2
3. n != 0 thus return sum5(0) + 1
4. n == 0 thus return 0
now we go back up
sum5(1) = sum5(0) + 1 => 1 | sum5(0) = 0 from last step.
sum5(2) = sum5(1) + 2 => 3 | sum5(1) = 1 from last step.
sum5(3) = sum5(2) + 3 => 6 | sum5(2) = 3 from last step.
P.S为了理解递归,你必须先了解递归 双关语。
答案 1 :(得分:1)
在自然语言中,函数返回其参数加上对自身的调用值,参数减少1 - 其前身类型。
给你10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0 = 55
这是非常基本的东西,你应该阅读一些计算机科学入门书中的递归。