欢迎来到入门教程网!

C语言

当前位置:主页 > 软件编程 > C语言 >

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

来源:本站原创|时间:2020-01-10|栏目: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 <stdio.h>
#include <stdlib.h>
int main()
{
 int fib(int a,int b,int n);
 int n;
 scanf("%d",&n);
 printf("%d",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);
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

上一篇:剑指offer之C语言不修改数组找出重复的数字

栏    目:C语言

下一篇:C语言如何正确的终止正在运行的子线程

本文标题:C语言项目爬楼梯的两种实现方法参考

本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/454.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有