需求:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析:
此题的突破口在台阶数;台阶数不一样,结果就不一样;由台阶数来找规律。
台阶数 | 跳法 |
1 | 1 |
2 | 2 |
3 | 4 |
4 | 8 |
5 | 16 |
6 | 32 |
...... | ...... |
通过分析台阶数,可以看出当台阶数为n时,跳法数为前两个之和,设跳法数为函数f(n),则有:
f ( n ) = 2 * f( n - 1 );
这是一个一个斐波那切数列,所以转化为求解斐波那切数列问题
实现代码:
import java.util.Scanner;
public class Solution {
public static int f(int n) {
if(n<2){
return n;
}else{
return 2*f(n-1);
}
}
public static void main(String[] args) {
System.out.println("请输入台阶数:");
Scanner s=new Scanner(System.in);
int n;
n=s.nextInt();
System.out.println("跳法数为:");
System.out.println(f(n));
}
}
分析:
首先,当位数为0时返回值为0;位数为1时返回1;因为他们是起始值;
然后,当位数为2时,其返回值 = 2 = 2*1;
当位数为3时,其返回值 = 4 = 2*2;
当位数为4时,其返回值 = 8 = 2*4;
当位数为5时,其返回值 =16=2*8;
......
所以由以上可得,大于等于3的情况下,当前位数的值
f (n) = 2 * f(n - 1)。
输出示例为:
欢迎大家留言讨论!