一个人上楼,他有两种走法,走一阶或走两阶,问他上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;}