java算法----走台阶


package com.dazhongdianping.interview;

public class Steps {
/**
* 问题描述:一次可以走1、2、3级台阶,N级台阶,一共有多少种走法?
* 问题简化:第一步可以走1级,剩下N-1级台阶,第一步可以走2级,剩下N-2级,第一步可以走3级,剩下N-3级
* 且f(2)=2,f(1)=1,f(0)=1
*/

public static void main(String[] args) {
Steps steps = new Steps();
steps.method1(10);
int s = steps.method2(10);
System.out.println("10级台阶共有:"+s+"种走法!");
}

/**
* 非递归算法
* @param n
*/
public void method1(int n){
int f0 = 1;
int f1 = 1;
int f2 =2;
int result =0;
if(n<2){
result = f1;
}else{
for(int i=2;i<n;i++){
result = f2+f1+f0;
f0 = f1;
f1 = f2;
f2 = result;
}
}
System.out.println(n +"级台阶共有 :"+result+"种走法!");
}
/**
* 递归算法
* @param n
*/
public int method2(int n){
if(n == 2){
return 2;
}else if(n == 1){
return 1;
}else if(n == 0 ){
return 1;
}else{
return method2(n-1)+method2(n-2)+method2(n-3);
}
}

}



运行结果:

10级台阶共有 :274种走法!
10级台阶共有:274种走法!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值