首页
学习
活动
专区
工具
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语言

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

C语言经典递归题目 -- 青蛙跳台阶问题

目录 题目描述 画图分析 思路分析 代码实现 ---- 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种法。...有两级台阶的情况 有两级台阶的时候,青蛙有两种法。 一阶,在一阶: 直接两阶: 有三级台阶的情况: 有三级台阶的时候,青蛙有三种法。...一阶,再一阶,再一阶: 一阶,再两阶: 两阶,再一阶: ---- 思路分析 经过上面的分析,我们知道了一级、二级和三级台阶法,现在要我们求 n 级台阶法...,我们可以这样思考: 假设这里有 n 级台阶,那么我们第一步就有两种选择: 一阶: 两阶: 假设 n 级台阶法一共有 f(n) 种,那么: 当我们第一步选择一阶时...所以 n 级台阶法总数应该是二种法之和(第一步可能一阶,也可能二阶):f(n-1) + f(n-2) 。

45500

用 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 运行代码,用鼠标点击目标位置,开始游戏。

87630

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阶的 法数。

83620

斐波那契数列

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

66910

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柱完成排序

9610

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个大小不同的盘子,大的在下,小的在上。

11610

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

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

21320

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

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

28660

青蛙跳台阶问题

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

32130

剑指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 ,由此,我们便可以将其转化为编程语言进行实现了。

50210

C#版 - 剑指offer 面试题9:斐波那契数列及其变形(跳台阶、矩形覆盖) 题解

面试题9:斐波那契数列及其变形(跳台阶、矩形覆盖) 提交网址: http://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?...1级台阶法数目是s(n - 1);  (2) 如果第1次时选择跳过2级台阶,那么剩下n - 2级台阶,而跳上n – 2级台阶法数目是s(n - 2)。 ...样例输入: 6 样例输出: 32 分析: 青蛙跳上n级台阶法情况(s(n)),第1次的时候:  (1) 如果第1次时选择跳过1级台阶,那么还剩下n-1级台阶,而跳上n – 1级台阶法数目是...s(n-1);  (2) 如果第1次时选择跳过2级台阶,那么剩下n-2级台阶,而跳上n – 2级台阶法数目是s(n-2)。 ...(3) 如果第1次时选择跳过3级台阶,剩下n-3台阶, 而跳上n –3级台阶法数目是s(n-3)。

54520
领券