牛客剑指offer- 青蛙上台阶问题:
问题描述:一只青蛙一次可以上1步或者2步台阶,求该青蛙跳上n级台阶总共有多少种跳法?
问题解析:
第一步有两种跳法:a>假设第一次跳的是1阶,那么剩下的是n-1个台阶,跳法是f(n-1);
b>假设第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2);
那么由a,b可知 总跳法 f(n)=f(n-1)+f(n-2);
又因为n=1时,f(1)=1; n=2时,f(2)=2; 可以得出:
| 1,(n=1)
f(n)=| 2,(n=2)
| f(n-1)+f(n-2) (n>2,n为整数)
扫描二维码关注公众号,回复:
279270 查看本文章
可以发现这是一个斐波那契数列;
代码如下:
import java.util.Scanner; /** * 剑指offer- * 青蛙上台阶问题: * 一只青蛙一次可以上1步或者2步台阶,求该青蛙跳上n级台阶总共有多少种跳法 * @author Jiacheng * */ public class Frogwstj { public static void main(String[] args) { Frogwstj frog=new Frogwstj(); Scanner scanner=new Scanner(System.in); while(true){ int count=frog.upperStage(scanner.nextInt()); System.out.println("总共有:"+count+" 种方法"); } } /** * 递归计算 * @param n 台阶数量 * @return 总共上台阶的方法 */ private int upperStage(int n) { if(n==1){ return 1; } if(n==2){ return 2; } int sum=upperStage(n-1)+upperStage(n-2); return sum; } }