You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
大家先来看一个现象:
设n个台阶,有f(n)种走的方式,那么:
f(1)=1
f(2)=2
f(3)=3
f(4)=5
f(5)=8
f(6)=13
......
有没有发现什么规律?
见到这种题目,第一个想到的应该是什么?没错!!!就是递归!!f(n)=f(n-1)+f(n-2)
import java.util.Scanner;
import java.lang.*;
public class stairProblem {
public static void main(String args[]) throws Exception{
System.out.println("Please input the num of stairs:");
Scanner a = new Scanner(System.in);
String str = a.nextLine();
if(!isQualify(str)) throw new Exception("wrong input");
System.out.println(resolve(Integer.parseInt(str)));
}
//需要有一个函数判断输入进来的是不是数字~
private static boolean isQualify(String str){
for(int i=0;i<str.length();i++){
if(str.charAt(i)<'0'||str.charAt(i)>'9'){
return false;
}
}
return true;
}
private static int resolve(int i){//主要的解决函数简单的发指有木有…………
if(i==1) return 1;
else if(i==2) return 2;
else return resolve(i-1)+resolve(i-2);
}
}