【C语言初阶】青蛙跳台阶问题画图详解、带你深度剖析-创新互联

在这里插入图片描述

成都创新互联公司致力于成都网站设计、网站建设,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择成都创新互联公司,就选择了安全、稳定、美观的网站建设服务!

你好,我是果粒.橙,可以叫我橙,一个正在与你们一起学习的在校专科生,本期内容:青蛙跳台阶,我将为大家介绍我怎么学会并实现青蛙跳台阶,希望通过本章对你有所帮助。如果看完对你有所帮助,帮我点个免费的赞哦!创作不易,当然如果文章里有哪些问题错误也欢迎评论区指出!谢谢,阿里嘎多!

本期内容
  • 题目描述:
  • 青蛙跳台阶规律是什么?
  • C语言实现青蛙跳台阶
  • 青蛙跳台阶和斐波那契数的区别

题目描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法?
在这里插入图片描述

一、青蛙跳台阶规律是什么?

根据题目描述,我们可以知道青蛙一次可以跳一个台阶或者跳两个台阶,他跳上n级台阶共有多少总跳法?
我们可以动手的简单计算一下台阶n为1,2,3、4、5的跳法有多少种?
找到他的规律
在这里插入图片描述
由上面的图我们可以得出跳5个台阶,分别对应着几种跳法,我们可以得到一个规律就是跳前3个台阶时,台阶为几个就几种跳法;到第四个台阶时,规律就发生了变换,变成了n个台阶跳法的几种等于前两项跳法之和, 如:4个台阶跳法 = 3个台阶跳法+2个台阶跳法;第5个台阶也是如此
在这里插入图片描述

二、C语言实现青蛙跳台阶 递归写法:

由我们上面的剖析,得到的规律可写出如下公式:
blog.csdnimg.cn/8ba304fbf50c4f29884378b6069ad8a0.png)
拿到这个公式,我们写起递归的C语言实现代码就很简单了,如:

//递归写法:
#includeint Frog(int n) 
{   if (n<= 3) 		
       return n; 	
   else 		
       return Frog(n - 1) + Frog(n - 2);
}
int main()
{int n = 0;
   printf("请输入台阶数:"); 	
   scanf("%d", &n); 	
   int num = Frog(n);
   printf("共跳法:%d\n", num);

   return 0;
}

我们来看看运行结果是否如我们上面推到的结果一样:
在这里插入图片描述
运行结果果然如我们推导那样,说明这个代码是成功的!

非递归写法:

知道了递归的写法我们还要清楚非递归怎么去写,
根据上面规律,我们台阶数为前3的规律写法保持不变,台阶从第4个台阶看,画出如下图分析
在这里插入图片描述
按画图的思路写出如下代码:

//非递归(迭代写法):
#includeint Frog(int n)
{if (n<= 3)
		return n;
	else
	{//a和b是n为4的前两项之和
		int a = 2;
		int b = 3;
		int c = 0;
		while (n >3)
		{	c = a + b;
			a = b;
			b = c;
			n--;//避免n没有发生变化导致死循环
		}
		return c;
	}
}
int main()
{int n = 0;
	printf("请输入台阶数:");
	scanf("%d", &n);
	int num = Frog(n);
	printf("共跳法:%d\n", num);

	return 0;
}

运行结果:
在这里插入图片描述
与推导结果一致,代码成功

三、青蛙跳台阶和斐波那契数的区别

看到这如果你写过了解过斐波那契数,那你会发现他两除了起始值不一样,其他都一样,没了解过看过的小伙伴可以参考一下我这篇《函数学习报告》中的练习4
【C语言初阶】函数学习报告

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


名称栏目:【C语言初阶】青蛙跳台阶问题画图详解、带你深度剖析-创新互联
链接地址:http://azwzsj.com/article/dpdidi.html