1.递归的介绍
递归是一种分治思想,分层而治,一层一层的进行下去,递归是在编程学中非常是非常重要的,它不是最好的方法,但它却是最好方法的基础。
2.例题讲解
下面我们以一道例题作为讲解:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
我们首先来讲解一下这道题:
A.n = 1时,我们只需要跳1次,就是一次跳1个台阶。
B.n = 2时,有俩种情况:
第一种情况就是直接跳2个
第二种情况就是第一次跳一个,第二次再跳一个
那么我来细讲一下当n = 3时,
假设第一次跳1个台阶,那么就剩下了2个台阶,剩下的2个台阶就可以用B中的方法进行计算了。
如果第一次跳2个台阶,那么就剩下1个台阶了,我们就可以用A的方法继续计算。
以此往下类推,形成了一层层的效果。
所以当为n阶台阶的时候,跳台阶的总次数为(n-1)+(n-2)
这里的(n-1)代表跳了1个台阶后剩下n-1个台阶的总次数,再要计算n-1个台阶的总次数自然而然就是(n-3)+(n-2),同理一直往下推。
3.代码展示
package Recursion
;
import java
.util
.Scanner
;
public class Frog {
public int f(int n
){
if (n
== 1){
return 1;
} else if (n
== 2) {
return 2;
}
return f(n
- 1) + f(n
- 2);
}
public static void main(String
[] args
) {
while (true) {
Frog f
= new Frog();
System
.out
.println("请输入台阶数:");
int n
= new Scanner(System
.in
).nextInt();
System
.out
.println(f
.f(n
));
}
}
}
4.总结
这道题其实和斐波那契数列是有相似之处的,只不过斐波那契前俩位是1和1,而这道题是1和2,基本上思路都是一致的,如果有什么不懂可以联系作者。