一只青蛙从第一级台阶跳到第n级,每次可以跳任意级,共有多少种跳法,并写出递推式

是斐波那契数列问题

假设f(n)是n个台阶跳的次数:(假设已经调到第n个台阶,最后一次是由哪个台阶跳上来的)

f(n) = f(n-1)+f(n-2)+...+f(n-(n-1)) + f(n-n) == f(0) + f(1) + f(2) + f(3) + ... + f(n-2) + f(n-1) == f(n) = 2*f(n-1)

所以,可以得出递推式:

1 public static int jumpFloor(int n) {
2         if (n <= 0)
3             return 0;
4         if (n == 1)
5             return 1;
6         return 2 * jumpFloor(n - 1);
7 }

跳台阶,一次只能夸1个、2个和3个台阶,解法类似:

1 public static int cnt(int n){
2         int[]dic = {0,1,2,4};
3         if ( n <= 3)
4             return dic[n];
5         return cnt(n-1) + cnt(n-2) + cnt(n-3);
6 }
时间: 2024-10-10 09:29:37

一只青蛙从第一级台阶跳到第n级,每次可以跳任意级,共有多少种跳法,并写出递推式的相关文章

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

一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 解:把n级台阶时的跳法记为f(n),当n>2时,第一次跳的时候有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另外一种是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2);因此n级台阶时的跳法为f(n)=f(n-1)+f(n-2).不难看出这实际是斐波拉契数列的变形应用,把斐波拉契数列的每一项向前移动了1位. 程序:

值得一做》关于数学与递推 BZOJ1002 (BZOJ第一页计划)(normal+)

什么都不说先甩题目 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图所示 N轮状病毒的产生规律是在一个N轮状基中删去若干条边,使得各原子之间有唯一的信息通道,例如共有16个不同的3轮状病毒,如下图所示 现给定n(N<=100),编程计算有多少个不同的n轮状病毒   Input 第一行有1个正整数n Output 计算出的不同的n轮状病毒数输出 S

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

import java.util.HashMap; //一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. public class Solution { //方法一:递归求解 public static int JumpFloor1(int n) { if(n<1){ return 0; } if(n==1){ return 1; } if(n==2){ return 2; } return JumpFloor1(n-1)+JumpFloor1(n-2)

第五届蓝桥杯Java组大学校园选拔真题_n级台阶

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: 蓝桥杯赛题 * 作    者:   彭俊豪 * 完成日期:   2016   年 04月 01日 * 版 本 号:      001 * 对任务及求解方法的描述部分 * 问题描述: 有n级台阶.从地面(第0级)出发,首先连续的上台阶,上到不超过第n级的某一个位置后再连续的下台阶,直到回到地面.若每次

nyoj 76-超级台阶 (递推)

76-超级台阶 内存限制:64MB 时间限制:1000ms 特判: No 通过数:8 提交数:12 难度:3 题目描述: 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法? 注:规定从一级到一级有0种走法. 输入描述: 输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数. 输出描述: 对于每个测试实例,请输出不同走法的数量. 样例输入: 复制 2 2

有口井7米深,一只青蛙白天爬3米,晚上坠下2米,问这青蛙几天才能爬出这口井?

int num = 0; for (int i = 1; i < 1000; i++) { num+=3; if(num>=7){ System.out.println("这只青蛙"+i+"天能爬出这口井!"); break; } num-=2; }

第四届蓝桥杯javaC组_第39级台阶

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: 蓝桥杯赛题 * 作    者:   彭俊豪 * 完成日期:   2016   年 04月 01日 * 版 本 号:      001 * 对任务及求解方法的描述部分 * 问题描述: 小明刚刚看完电影<第39级台阶>,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着

蓝桥杯 第39级台阶 DP

题目描述:  小明刚刚看完电影<第39级台阶>,离开电影院的时候, 他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶. 先迈左脚,然后左右交替,最后一步是迈右脚, 也就是 说一共要走偶数步.那么,上完39级台阶, 有多少种不同的上法呢? 请你利用计算机的优势,帮助小明寻找答案. 要求提交的是一个整数. 注意:不要提交解答过程,或其它的辅助说明文字. 基本思路: 将两步合并成一步,就化作了最基本的那种DP 相当于每两步可走2 ,3,4

18递归:39级台阶

题目]    小明刚刚看完电影<第39级台阶>,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!    站在台阶前,他突然又想着一个问题:    如果我每一步只能迈上1个或2个台阶.先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步.那么,上完39级台阶,有多少种不同的上法呢?    请你利用计算机的优势,帮助小明寻找答案. 要求提交的是一个整数. 注意:不要提交解答过程,或其它的辅助说明文字 import java.math.BigInteger; import jav