我所理解的递归:
【上楼梯问题】
爬楼梯问题,即一个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); } }
|