当前位置: 首页 > news >正文

【C语言练习】青蛙跳台阶

一、题目

一只青蛙一次可以跳1个台阶,也可以跳2个台阶,对于n个台阶,一共有多少种跳法。
在这里插入图片描述

二、分析

假设我们用变量n表示台阶数:
n = 1:1跳法(①跳1阶)

n = 2:2种跳法(①跳1阶,跳1阶;②跳2阶

n = 3:3种跳法(①跳1阶,跳1阶,跳1阶;②跳1阶,跳2阶;③跳2阶,跳1阶
n = 4:5种跳法(①跳1阶,跳1阶,跳1阶,跳1阶;②跳1阶,跳1阶,跳2阶;③跳1阶,跳2阶,跳1阶;④跳2阶,跳1阶,跳1阶;⑤跳2阶,跳2阶

从n = 4(或者n = 3)我们可以看出,每一种跳法都能够看成是前面两种跳法的延续(不同颜色对应),可以看成是斐波那契数列。
我们假设f(n)表示的是n阶台阶跳法,那么f(n) = f(n-1)+f(n-2)。
也可以用下图进行解析:
在这里插入图片描述
当青蛙第一次只跳1个台阶,那么还剩下n-1个台阶,就有f(n-1)种跳法。
在这里插入图片描述
同理,如果刚开始跳2个台阶,那么剩下台阶的跳法就是f(n-2)。f(n-1)+f(n-2)即是n阶台阶的跳法。

三、代码实现

#include <stdio.h>int Jump(int n)
{if(n <= 2)return n;elsereturn Jump(n - 1) + Jump(n - 2);
}int main()
{int n = 0;scanf("%d", &n);int ret = Jump(n);printf("%d\n", ret);return 0;
}

运行结果:
在这里插入图片描述

http://www.xdnf.cn/news/1360513.html

相关文章:

  • Vue状态管理工具pinia的使用以及Vue组件通讯
  • 强光干扰下检出率↑93%!陌讯多模态融合算法在充电桩车位占用检测的实战解析
  • 力扣【1277. 统计全为1的正方形子矩阵】——从暴力到最优的思考过程
  • 【网络运维】Shell脚本编程:函数
  • 深度学习之第二课PyTorch与CUDA的安装
  • AOSP构建指南:从零开始的Android源码之旅
  • Docker 容器(一)
  • 【Docker基础】Docker-compose常用命令实践(三):镜像与配置管理
  • 【零代码】OpenCV C# 快速开发框架演示
  • 电路学习(四)二极管
  • 【计算机视觉】CaFormer
  • Java:LinkedList的使用
  • 【Protues仿真】基于AT89C52单片机的温湿度测量
  • 【文献阅读】生态恢复项目对生态系统稳定性的影响
  • 在JavaScript中,比较两个数组是否有相同元素(交集)的常用方法
  • 解决编译osgEarth中winsocket2.h找不到头文件问题
  • Node.js自研ORM框架深度解析与实践
  • C++11新特性全面解析(万字详解)
  • Starlink第三代终端和第二代终端的差异性有哪些?
  • Flink SQL执行SQL错误排查
  • MySQL的安装和卸载指南(入门到入土)
  • ZKmall模块商城的推荐数据体系:从多维度采集到高效存储的实践
  • 从“小麻烦”到“大难题”:Spring Boot 配置文件的坑与解
  • 04-ArkTS编程语言入门
  • 使用UE5开发《红色警戒3》类战略养成游戏的硬件配置指南
  • 源码导航页
  • Linux网络启程
  • 毛选一卷解析
  • 时间复杂度
  • C++STL底层原理:探秘标准模板库的内部机制