首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

一个人上楼,他有两种走法,走一阶或走两阶,问他上N阶阶梯有几种走法

2013-10-17 
一个人上楼,他有两种走法,走一阶或走两阶,问他上N阶楼梯有几种走法?#include stdafx.h int f(int n) {if

一个人上楼,他有两种走法,走一阶或走两阶,问他上N阶楼梯有几种走法?

#include "stdafx.h" int f(int n) {    if(n==1)  {     return 1;   }  else if(n==2)  {     return 2;  }  else  {     return f(n-1)+ f(n-2);  } }int _tmain(int argc, _TCHAR* argv[]){int n;while(1){printf("请输入n");scanf("%d",&n);printf("%d\n",f(n));}return 0;}


经过阿泽同学的指导,发现上面那个算法不可行,运算时间过长

修改过后如下

// demo2.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"double m[100]={0.0}; double f(int n) {    if(n==1)  {     return 1.0;   }  else if(n==2)  {     return 2.0;  }  if(m[n]>0)  return m[n];  return  m[n]=f(n-1)+ f(n-2); }int _tmain(int argc, _TCHAR* argv[]){int n;while(1){printf("请输入n");scanf("%d",&n);printf("%.0f\n",f(n));}return 0;}


 

2楼lyjgames昨天 22:02
这样递归就显得多余了,n设1步走了x次,2步走了y次,二元一次方程,求出所有自然数结果就行了
Re: zhujunxxxxx昨天 22:02
回复lyjgamesn这样是不行的
1楼u012218650昨天 17:26
直接求出自然数结果应该不对吧……n还得排列组合一下吧?……
Re: zhujunxxxxx昨天 21:00
回复u012218650n那应该怎么样了?

热点排行