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种走法!

你可能感兴趣的:(java算法)