N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式
N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式?
?
思路一:设有x次走一阶,y次走两阶,则一定满足x+2*y=n,且x、y均为整数,那么对于任何一个满足的x的可能走法共有
C(x+(n-x)/2,x)种走法,即从数x+(n-x)/2中取x种组合,值为(x+(n-x)/2)的阶乘除以x的阶乘与(n-x)/2的阶乘的乘积。
依次取可能的x值,然后相加每一种的可能情况就可以了。代码如下
public static int fic(int n){if(n==1||n==2){return n;}else if(n>=3){return fic(n-1)+fic(n-2);}else{return -1;//输入n值非法}}?
?
?
?