递归求和

我所理解的递归:

【上楼梯问题】
爬楼梯问题,即一个N阶的楼梯,每次能走1~2阶,问走到N阶一共多少种走法。
第n阶的走法等于 (n-1)阶(n-2)阶 的和。
(先走到第(n-2)阶然后走两阶,或者先走上第(n-1)阶然后走一阶)。

其中 (n-1)阶楼梯的走法等于 (n-2)阶(n-3)阶 走法的和。

(n-2)阶楼梯的走法 等于 (n-3)阶(n-4)阶 走法的和。
·
·
·
·
2阶楼梯有两种走法,走一阶梯再走一阶梯,直接走两阶梯。

求和问题

普通正常1~100求和方式

1
2
3
4
5
6
7
8
9
class sum3{
public static void main(String[] args){
int sum = 0;
for(int i = 1; i <= 100 ; i ++ ){
sum += i;
}
System.out.println(sum);
}
}

使用递归方式求整数1~100的和。

1
2
3
4
5
6
7
8
9
10
11
12
13
public class sum {
static int demo1(int i){
if(i != 1)
return(demo1(i-1)+i);
return 1;
}

public static void main(String[] args){
int i = demo1(100);
System.out.println("1-100的和:"+i);
}
}

普通方式求1~100之内奇数的和

1
2
3
4
5
6
7
8
9
class sum3{
public static void main(String[] args){
int sum = 0;
for(int i = 1; i < 100 ; i += 2 ){
sum += i;
}
System.out.println(sum);
}
}

递归方式求1-100之内的奇数的和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class sum2{
static int demo2(int i){
if(i%2==0)
i -= 1;
if(i != 1)
return(demo2(i-2)+i);
return 1;

}
public static void main(String[] args){
int i = demo2(100);
System.out.println("100以内的奇数的和:"+i);
}
}