首页 > 编程 > C > 正文

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

2020-01-26 13:32:10
字体:
来源:转载
供稿:网友

【项目-爬楼梯】

楼梯有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);}

总结

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选