当前位置:网站首页>青蛙跳台阶(递归和非递归)-------小乐乐走台阶
青蛙跳台阶(递归和非递归)-------小乐乐走台阶
2022-07-30 19:29:00 【果辰辰果】
小青蛙跳台阶
一、 问题描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法???

二、分析问题
当n=1时,有一种跳法
当n=2时,有两种跳法
1.跳一级,跳一级
2.跳两级
当n=3时,有三种跳法
1.跳一级,跳一级,跳一级
2.跳一级,跳两级
3.跳两级,跳一级
先假设f(n)为 n 级台阶的总跳法数;
那么第一次如果选择跳一级的话,剩下的 n-1 级台阶的跳法数就为f(n−1)。
如果第一次跳两级的话,剩下的 n-2 级台阶的跳法就是f(n−2);
所以,当有n个台阶时有f(n)=f(n-1)+f(n-2)种跳法。
三、代码实现(递归)
#include<stdio.h>
int steps(int x)
{
if (x == 1)
{
return 1;
}
if (x == 2)
{
return 2;
}
return steps(x - 1) + steps(x - 2);
}
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d", steps(n));
return 0;
}
四、代码实现(非递归)
#include<stdio.h>
int steps(int x)
{
if (x < 3)
{
return x;
}
int final1 = 1;//倒数第一个跳法
int final2 = 2;//倒数第二个跳法
int sum = 0;//计算一共多少种
for (int i = 3; i <= x; i++)
{
sum = final1 + final2;
final1 = final2;
final2 = sum;
}
return sum;
}
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d", steps(n));
return 0;
}
边栏推荐
猜你喜欢

golang日志库zerolog使用记录

Encapsulates a console file selector based on inquirer

VBA 运行时错误‘-2147217900(80040e14):自动化(Automation)错误

VBA runtime error '-2147217900 (80040e14): Automation error

【PyTorchVideo教程01】快速实现视频动作识别

VBA批量将Excel数据导入Access数据库

开心的聚餐

Delay queue optimization (2)

谷歌AlphaFold近日宣称预测出地球上几乎所有蛋白质结构

node封装一个控制台进度条插件
随机推荐
nlohmann json 使用指南【visual studio 2022】
How do radio waves transmit information?
技术很牛逼,还需要“向上管理”吗?
架构师如何成长
谷歌AlphaFold近日宣称预测出地球上几乎所有蛋白质结构
第一次进入小程序判断
SimpleOSS third-party library libcurl and engine libcurl error solution
Zabbix 5.0 Monitoring Tutorial (1)
What is the value of biomedical papers? How to translate the papers into Chinese and English?
Go system collection
牛客网——华为题库(100~108)
Common linked list problems and their Go implementation
Spark学习:编译Spark项目时遇到的报错
常见链表题及其 Go 实现
Swiper轮播图片并播放背景音乐
【PHPWord】Quick Start of PHPWord in PHPOffice Suite
Object和Map的区别
Win11如何更改默认下载路径?Win11更改默认下载路径的方法
【Prometheus】Prometheus联邦的一次优化记录[续]
requet.getHeader("token") is null