首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C语言】C语言⻘蛙跳台阶问题--递归问题

解决方法: 当n=1时,只有一种跳法。 当n=2时,有两种跳法:跳一次2级台阶或者跳两次1级台阶。 当n>2时,青蛙的第一次跳有两种选择:跳一级台阶或者跳两级台阶。...如果青蛙第一次跳一级台阶,那么跳上剩下的n-1级台阶的跳法数目为f(n-1)。 如果青蛙第一次跳两级台阶,那么跳上剩下的n-2级台阶的跳法数目为f(n-2)。...以下是使用递归方式求解第n个斐波那契数的C语言代码: #include int fibonacshu(int n) { if (n <= 1) {...下面是一个递归函数来判断字符串是否是回文字符串: 分析: 在C语言中,字符串是一个字符数组,每个字符都有一个对应的索引。...对于一个字符串 “level”,它包含5个字符,每个字符的索引如下: 字符: l e v e l 索引: 0 1 2 3 4 在C语言中

27710

【Html.js——算法题】小兔子爬楼梯(蓝桥杯真题-1770)【合集】

背景介绍 小兔子想去月球上旅行,假设小兔子拥有一个 n 阶梯子,当你爬完 n 层就可以到达月球,小兔子每次可以跳 1 或者 2 个台阶,小兔子有多少种跳法可以到达月球呢?...给定 n 是一个正整数,代表梯子的阶数,当 n=2 时,小兔子有 2 种跳法到达月球;当 n=3 时,小兔子有 3 种跳法跳到月球,以此类推,解释如下图所示: 思路提示 这里为同学提供以下两种解题思路...这些元素将用于显示小兔子跳不同阶梯数的跳法结果。 台阶跳到 n 级台阶的跳法数量,调用 climbStairs(n - 2) 表示从 n - 2 级台阶跳到 n 级台阶的跳法数量。...对于每一个 i,dp[i] 的值等于 dp[i - 1](表示从 i - 1 级台阶跳 1 级到达 i 级的跳法数量)加上 dp[i - 2](表示从 i - 2 级台阶跳 2 级到达 i 级的跳法数量

5300
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C语言】函数递归例子2青蛙跳台阶问题

    接下来我们来看一下第二个例子青蛙跳台阶 青蛙跳台阶问题  这个问题经常在各类面试中看到。一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。...是实践函数递归的典型问题 分析问题 我们先假设有n个台阶,如果n=1,那么只有一种跳法,如果n=2,那么就有两种跳法。...如果n=3,若第一次跳一阶,那么第二次跳二阶,若第一次跳二阶,那么第二次跳一阶,有两种情况,因此跳三个台阶时相当于先分类再相加前两种情况 即跳三个台阶跳法=跳一个台阶跳法+跳两个台阶跳法。...所以当有n个台阶时,假如青蛙第一次跳了1个台阶,那么剩下了n-1个台阶;假如青蛙第一次跳了2个台阶,那么剩下了n-2个台阶 那我们是不是可以这么想跳n个台阶的跳法=跳n-1个台阶跳法+跳n-2个台阶跳法...,但当n=2时,斐波那契数是1,而青蛙跳台阶是2种跳法,所以,从这里开始斐波那契数列是1,1,2,3……而青蛙跳台阶跳法排序是1,2,3,5……虽说规律相同,但是不一样!!!

    13410

    用 Wolfram 语言玩「跳一跳」

    2017年12月28日下午,微信发布了 6.6.1 版本,加入了「小游戏」功能,并提供了官方 demo「跳一跳」。...想到用 Wolfram 语言 来做也很简单,甚至更简洁,先做了一个手动版的(不到十行代码) 原理和那个 Python 版的一样,主要做了两个改动: ① 用 Adb 工具获取手机截图再将截图pull上来,...Mathematica 11.2 Android 手机 Total Control Adb 驱动 02 原理说明 通过 Total Control 软件将手机屏幕通过 WiFi 实时显示在电脑,用 Wolfram 语言...04 Wolfram 语言代码 EventHandler[ Dynamic[img = CurrentScreenImage[{{7, 64}, {7 + 360, 64 + 640}}]], "...③ 界面转至微信跳一跳游戏,点击开始游戏。 ④ 打开 Mathematica 运行代码,用鼠标点击目标位置,开始游戏。

    91530

    Python经典算法

    GitHub GitHub代码 问题描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级(最多跳2级),求该青蛙跳上一个n级的台阶总共有多少种方法?...规律 如果台阶只有一级,只有一种走法;如果台阶有两级,走法有两种;如果台阶有N级,最后跳上第N级的情况,要么是从N-2级直接跳两级台阶,或者从第N-1级跳一级台阶,所以台阶有N级的方法数等于跨到N-2级台阶的方法数加上跨到...求该青蛙跳上一个n级的台阶总共有多少种跳法。 规律 ?...---- 当跳1级台阶时,f(1) = 1; 当跳2级台阶时,f(2) = f(1) + 1 = 2; 当跳3级台阶时,f(3) = f(2) + f(1) + 1 = 4; 当跳4级台阶时,f(...这里的f(n) 代表的是n个台阶有一次1,2,…n阶的 跳法数。

    85620

    c语言函数递归与迭代详解(含青蛙跳台阶问题详解)

    递归是学习C语言函数绕不开的一个话题,那什么是递归呢? 递归其实是一种解决问题的方法,在C语言中,递归就是函数自己调用自己。...这里先以函数栈帧的角度进行分析: 在C语言中每一次函数调用,都需要为本次函数调用在内存的栈区,申请一块内存空间来保存函数调期间的各种局部 变量的值,这块空间被称为运行时堆,或者函数。...b; b = c; n--; } return b; } 迭代的方式去实现这个代码,效率就要高出很多了。...青蛙跳台阶 题干:青蛙一次能跳1或2级台阶,问青蛙跳上n级台阶有几种跳法? 那么对于这个问题,我们可以逆向来分析。...我们可以先计算青蛙想要跳上最后一级台阶(登顶)有多少种可能: 显然,有两种办法,从n-1跳一级上去,从n-2跳两级上去。

    7610

    斐波那契数列

    排列组合 有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法?...这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法…… 1,2,3,5,8,13……所以,登上十级,有89种走法。...一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?...分析:第一个月只有一对兔子,第二个月多了第一个月的兔子生的小兔子,总共就有两对兔子, 因此F1=1,F2=2,Fn代表第n个月总共有几对兔子 第三个月多了第一个月的兔子生的小兔子F1对,就有三对 因此F3...=F1+F2 第四个月多了第二个月所有兔子生的小兔子F2对,就有五对 因此F4=F2+F3 . . .

    70010

    C语言进阶指南(6)(函数递归详解)(内含汉诺比塔,青蛙跳台阶问题)

    *欢迎来到博主的C语言进阶指南专栏博主id:reverie_ly*@toc递归在了解C语言递归程序之前,我想先请大家思考一个数学递归题:已知f(n)=f(n-1)+1,f(0)=0。...我们发现递归fib(50)需要调用2的50次方次函数才能得到返回值青蛙跳台阶青蛙跳台阶的问题如下:有一个青蛙,它一次能跳两个台阶,也可以跳一次台阶,那么当青蛙跳到第n个台阶时,总共有几种跳法。...如果青蛙在n-1个台阶,青蛙就要有总共有跳(n-1)个台阶的方法,如果青蛙在n-2个台阶上,那么青蛙就总共有跳(n-2)个台阶的方法。...所以青蛙跳上第n个台阶总共有跳(n-1个台阶)+(n-2个台阶)的方法于是我们就又抽象出数学语言了,An=An-1+An-2。A1=1。....汉诺比塔问题想让盘子在最低端由大到小排序,我们需要先将第n个的盘子挪到c柱上,那么我们需要先将前边的(n-1)个盘子按由大到小的规律挪到b柱,接着把第n个盘子挪到c柱,再将(n-1)个盘子挪到c柱完成排序

    12610

    【C语言】青蛙跳台阶问题 - 递归算法(一种思路,针对三种不同的情况)

    可能也有的读者会问,我不是学C语言的,看这个会不会不合适。对此,我只想说:编程的尽头是天马行空的脑洞和转化问题的能力,编程语言只是我们解决问题的工具,只要问题被解决了,用什么语言效果都是大差不差的。...第一种就是,当青蛙选择一开始先跳一步时,那么两个台阶就只剩下一个台阶要跳了,那还能怎么办,继续跳就完事了。 第二种就是,青蛙选择一次跳两步,两个台阶就被跳完了。...那么我现在就用语言来解释这个递推公式背后的秘密。 我们可以想象一下,当台阶数大于2时: 当台阶数n=3时,聪明的青蛙此时就会说:“那我先跳1个台阶试试看后面的情况。”...看到这里,你可能还是不理解上述的语言表述,我就在多举一个例子 那么,当台阶数n=4,又会发生什么情况呢?...Fun(3) 可是这样还不够啊,青蛙也有可能一开始就跳两步, 当青蛙一开始就跳2步,那么台阶就还剩2个,问题不就又转化为:求2个台阶有多少种跳法。

    14810

    c语言从入门到实战——函数递归

    递归是学习C语言函数绕不开的一个话题,那什么是递归呢? 递归其实是一种解决问题的方法,在C语言中,递归就是函数自己调用自己。...拓展学习: 青蛙跳台阶问题 汉诺塔问题 青蛙跳台阶问题 题目描述: 一只青蛙可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法。...分析: 本题实质上就是一个斐波那契数列问题,当台阶数为1或2时,跳法分别为1和2,当台阶数为n时,第一步可以选择跳1级或者2级,所以跳n级台阶的跳法总数就是跳n-1级台阶的跳法总数加上跳n-2级台阶的跳法总数...pre2 = pre1; //更新前一级台阶的跳法总数 pre1 = res; //更新当前台阶跳法总数 } return res; } 下面是一个使用递归方式实现的...当n等于5时,输出结果为:跳上5级台阶共有8种跳法。 汉诺塔问题 汉诺塔问题是一道经典的递归问题,其描述为:有三个柱子,分别为A、B、C,A柱子上有N个大小不同的盘子,大的在下,小的在上。

    22910

    计算机初级选手的成长历程——青蛙跳台阶问题详解

    : 跳1次1级台阶和跳4次1级台阶——1+1+1+1+1; 跳1次1级台阶和跳2次1级台阶与跳1次2级台阶——1+1+1+2; 跳1次1级台阶和跳1次1级台阶与跳1次2级台阶与跳1次1级台阶——1+1+...接下来我们顺着解决斐波那契数的思路来求解这个问题: 功能编写 功能一——从第3项起,每一项为前两项之和 int a = 1, b = 2, c = 0; //第3项起,每一项为前两项之和 c =...for (int i = 3; i <= n; i++) { //第3项起,每一项为前两项之和 c = a + b; a = b; b = c; } return...接下来我们就来实现jump函数求解青蛙跳台阶的方式; (3)函数的实现 函数迭代实现: int jump(int n) { int a = 1, b = 2, c = 0; //判断台阶数 if...; i <= n; i++) { //第3项起,每一项为前两项之和 c = a + b; a = b; b = c; } return c; } } int main

    44160

    青蛙跳台阶问题

    文字表述 首先,当只有一级台阶时,毫无疑问,只有一种跳法 其次,当有两级台阶时,就是两种跳法 那么,三级台阶时,应该两种情况 1、若青蛙先跳一级台阶,接下来就有两种跳法,要么一级一级地跳,要么直接就跳上两级...2.若青蛙先跳两级台阶,接下来只能在再跳一级台阶 所以当有三级台阶时,一共有3种跳法 那么,一共有4级台阶时,一共有多少种跳法呢?...所以此时一共有3种跳法 2.青蛙先跳2级台阶,接下来他还有2级台阶要跳,此处也可以使用之前得出的2级台阶的结果,所以此时一共有2种跳法 所以当青蛙要跳4级台阶时,其实就是跳3级台阶的跳法加上跳2级台阶的跳法...总结:事实上,跳n级台阶的跳法就是跳n-1级台阶的跳法加上n跳-2级台阶的跳法,而这就可以使用递归的方法来解决 图片表述 跳一级就只有一种跳法 跳两级有2种跳法也是非常好理解的 当有3级台阶时,...b = c; } return c; } } 这样子循环的效率就会高于递归的写法

    35930

    剑指Offer的学习笔记(C#篇)-- 跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 一 . 解题思路。        ...由题目可知,青蛙一次可以跳一阶或者两阶。...假设台阶为N阶,我们可以这样想:        假设青蛙最后一跳为一阶,此时预留出最后的一阶,是不是青蛙跳(N-1)阶与跳N阶,可能出现的方法一样呢(肯定一样啦,哈哈)        假设青蛙最后一跳为二阶...,此时预留出最后的两阶,是不是青蛙跳(N-2)阶与跳N阶,可能出现的方法一样呢(也是一样哦,有点绕吗?)        ...代码实现(C#) 方法一:低效的递归法 class Solution { public int jumpFloor(int number){ if(number==1||number

    23020

    【C语言新手村】新手任务:认识函数

    前言 C语言函数是一种函数,用来编译C语言,一般包括字符库函数,数学函数,目录函数,进程函数,诊断函数,操作函数等 这里这个函数和我们高中时期学的函数类似,高中的函数是这样...F(x)=5x+21 这里是在括号里输入x,输出F(x)计算的值 比如这里输入100,那么结果就是521 在C语言中函数也是这样的...int add(int x) { return y=5x+21; } 同样都是给函数输入x的值,输出y 函数的运用 C语言中把函数分为两类...求该青蛙跳上一个 n 级的台阶总共有多少种跳法。...:如果青蛙第一次只跳一级台阶,那么就还剩下n-1级台阶(ways(n-1)种跳法) 第二类:如果青蛙第一次跳了二级台阶,那么就还剩下n-2级台阶(ways(n-2)种跳法)

    5400

    剑指offer第8题:青蛙跳台阶

    青蛙跳台阶 剑指Offer10- II :青蛙跳台阶问题【简单题】 ? 题目描述 解决方法: 根据题意,我们可以看出整个题目的思路是十分清晰的。...我们需要想办法将题目语言,先转化为数学符号,最后再转化为编程语言就十分方便了。下面我们来分析一些这道题目。 题目要求我们得到青蛙跳到一个n级台阶上时,应该有多少中方法。...那我们先假定跳到第n个台阶上时,有f(n)种跳法。而题目告诉我们,一只青蛙每次可以跳1级台阶或者2级台阶。...所以,当青蛙跳到了第n级台阶上时,它的只有可能从两个地方过来,一种是从第n-1级台阶跳1个台阶,到达了n级台阶,还有一种方法是从n-2级台阶跳了2个台阶,到达了第n级台阶。...然后我们再查看初始值,f(0) = 1 , f(1) = 1 , f(2) = 2 ,由此,我们便可以将其转化为编程语言进行实现了。

    53610
    领券