栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【跳台阶问题】C语言

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【跳台阶问题】C语言

目录
  • 跳台阶问题
    • 问题描述
    • 实际实现
    • 通项
      • 斐波那契数列
    • C语言代码
      • 迭代(循环)方式实现

跳台阶问题 问题描述

有n级台阶,每次只能向上跳1级或2级台阶,求到达最高级台阶的跳跃方式数c。

实际实现

n=1时,跳1级,c=1;
n=2时,跳1+1级或跳2级,c=2;
n=3时,跳1+1+1级或1+2级或2+1级,c=3;
n=4时,跳1+1+1+1级或1+2+1级或2+1+1级或1+1+2级或2+2级,c=5;
…

通项

为了实现跳跃n级台阶,可以先跳(n-1)级台阶,再跳1级台阶;或先跳(n-2)级台阶,再跳2级台阶。
总跳跃方式数为c(n)=c(n-1)+c(n-2).

斐波那契数列

1,1,2,3,5,8,13,21,…
斐波那契数列的第n项等于第(n-1)项与第(n-2)项之和。

C语言代码
//函数递归部分
int Tiao(int n) {
	if (n == 1) {
		return 1;
	}
	else if (n == 2) {
		return 2;
	}
	else {
		return Tiao(n - 1) + Tiao(n - 2);
	}
}
int main() {
	int n = 0;
	printf("请输入台阶数:");
	scanf("%d", &n);
	int c = Tiao(n);
	printf("跳跃方式数为:%d", c);
	return 0;
}
迭代(循环)方式实现
int Tiao(int n) {
	int cn_1 = 2, cn_2 = 1, cn = 0;    //初始c1=cn_2=1,c2=cn_1=1
	if (n == 1) {
		cn = 1;
	}
	else if (n == 2) {
		cn = 2;
	}
	while (n > 2) {
		cn = cn_1 + cn_2;
		cn_2 = cn_1;    //cn_2后移一位
		cn_1 = cn;    //cn_1后移一位
		n--;
	}
	return cn;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030123.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号