C语言项目爬楼梯的两种实现方法参考

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语⾔项⽬爬楼梯的两种实现⽅法参考
【项⽬-爬楼梯】
楼梯有n阶台阶,上楼可以⼀步上1阶,也可以⼀步上2阶,编⼀程序计算共有多少种不同的⾛法?
【参考解答(递归法)】
基础:楼梯有⼀个台阶,只有⼀种⾛法(⼀步登上去);两个台阶,有2种⾛法(⼀步上去,或分两次上去);
递推:有n个台阶时,设有count(n)种⾛法,最后⼀步⾛1个台阶,有count(n-1)种⾛法;最后⼀步⾛2个台阶,有count(n-2)种⾛法。

于是count(n)=count(n-1)+count(n-2)。

可见,此问题的数学模型竟然是斐波那契数。

#include<stdio.h>
int main()
{
unsigned long count(int n);
int n;
unsigned long m;
printf("请输⼊楼梯的阶数:");
scanf("%d",&n);
m=count(n);
printf("有%lu种爬楼梯的⽅法\n",m);
return 0;
}
unsigned long count (int n)
{
unsigned long f;
if(n==1)
f=1;
else if(n==2)
f=2;
else
f=count(n-1)+count(n-2);
return(f);
}
递归思路清晰,但却“成本”⾼。

另⼀个⽅法,在完成问题建模之后,采⽤了⼀种很巧妙的“⾮常规”的做法,将运算量减少了⼀半。

//计163-1姜淇瀚
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
int main()
{
int fib(int a,int b,int n);
int n;
scanf(&quot;%d&quot;,&amp;n);
printf(&quot;%d&quot;,fib(0,1,n));
return 0;
}
int fib(int a,int b,int n)
{
if(n==3)
{
return a+b;
}
return fib(b,a+b,n-1);
}
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,谢谢⼤家对的⽀持。

如果你想了解更多相关内容请查看下⾯相关链接。

相关文档
最新文档