【九度OJ1388】斐波那契数列之跳台阶

青蛙跳台阶问题
本文解决了一个经典的编程问题——青蛙跳台阶。通过递推公式 s(n)=s(n-1)+s(n-2) 计算青蛙跳上 n 级台阶的不同跳法数量,并提供了完整的 Java 实现代码。

题目描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

输入:

输入可能包含多个测试样例,对于每个测试案例,

输入包括一个整数n(1<=n<=70)。

输出:

对应每个测试案例,

输出该青蛙跳上一个n级的台阶总共有多少种跳法。

分析:
从后往前分析,青蛙完成最后一步有两个选择:跳一个或跳两个,则完成最后一步的所有方法为:完成最后一步的跳法加上完成最后第二步的跳法;因此可以得到递推公式为:


s(n) = s(n-1)+s(n-2);
s(1) = 1;
s(2) = 2;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;

/**
 * 斐波那契数列之青蛙跳台阶
 * @author aqia358
 *
 */
public class Main {

	public static long f(int n){
		long[] a = new long[n+2];
		a[1] = 1;
		a[2] = 2;
		int pos = 3;
		while(pos <= n){
			a[pos] = a[pos-1] + a[pos-2];
			pos++;
		}
		return a[n];
	}
	public static void main(String[] args) throws IOException {
		StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
		while(st.nextToken() != st.TT_EOF){
			System.out.println(f((int)st.nval));
		}
	}

}


转载于:https://my.oschina.net/u/1182234/blog/169688

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值