package test;
//递归
public class test {
public static void main(String[] args) {
int sum = sum(3);
System.out.println(sum);
f(10);
}
public static int sum(int n) {
if (n <= 1) {
return n;
}
//逐渐返回(当n==1 返回1给sum(2) sum(2)=2+1 sum(2)返回3给sum(3) sum(3)=3+3)
return n + sum(n - 1);
}
public static void f(int n) {
if (n > 0) {
f(n - 10);
f(n - 1);
}
//n<0输出n并回溯ex:(栈f(10),f(0))
//执行到f(0)时(n>0 is false 则输出0,回溯到f(10)继续执行此时栈(f(10),f(9),f(-1)))
//执行到f(-1)时(n>0 is false 则输出-1,回溯到f(9)继续执行此时栈(f(10),f(9),f(8),f(-2))......
//执行到最后依次退栈即可
System.out.print(n + " ");//0 -1 -2 -3 -4 -5 -6 -7 -8 -9 0 1 2 3 4 5 6 7 8 9 10
}
}