首页 > 代码库 > 递归小题中的空间换时间思想
递归小题中的空间换时间思想
题目: 如数: 1 1 2 3 5 8 13 21 34 55 ......
序号: 0 1 2 3 4 5 6 7 8 9 ......
由用户输入序号,输出对应的数值。
效果:
实现代码:
#include <stdio.h> int bian(int num); //static int shu[100]={1,1}; int main() { int num; while ( printf("请输入编号数:"), scanf("%d",&num)==1 ) { printf("序号%d的数字:%d\n",num, bian(num)); } return 0; }
/*重复计算了太多步骤,当序号较大时耗时太多*/ /* int bian( int num ) { if (num <= 2) { return 1; } else { return bian(num-1)+bian(num-2); } return 0; } */
/*优化后,将计算过的数值保存起来,用空间换时间的思想*/ int bian( int num ) { static int shu[100]={1,1};//注意static if (!shu[num]) { shu[num]= bian(num-1)+bian(num-2); return shu[num]; } else { return shu[num]; } return 0; }
小结:第一次遇到空间换时间的小例子!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。