zoukankan      html  css  js  c++  java
  • 读书笔记——数据结构(1)关于递归

    当一个函数用它自己来定义时就称为递归。

    但重要的是要记住,C提供的仅仅是遵循递归思想的一种企图。不是所有的数学函数都能有效地(或正确地)由C的递归模拟来实现。

    递归的4个基本法则:

    1.基准情形。必须要有某些基准的情形,它不用递归就能求解。

    2.不断推进。对于那些需要递归求解的情形,递归调用必须总能够朝着产生基准情形的方向推进。

    3.设计法则。假设所有的递归调用都能运行。

    4.合成效益法则。在求解一个问题的同一个实例时,切勿在不同的递归调用中做重复性的工作。


    递归的主要问题是隐含的簿记开销。

    --------------------------以上内容书中摘录,我是小尾巴,哦不,分割线--------------------

    记得大二的时候,从毕业季的跳蚤市场上买了本信计专业的书,上面由讲从递归得出非递归的方法。

    现在身在外地,而且时隔多年,那本书怕是找不到了。


    关于书中举的Fibonacci数列的解法网上有各种各样的资料,我就不列举了。

    只给出一个非递归的解法。

    LONG Fibonacci(LONG lparam)
    {
    	if(lparam==1||lparam==2)
    	{
    		return 1;
    	}
    
    	LONG lf1=1;
    	LONG lf2=1;
    	LONG lRes=0;
    	for(LONG lIndex=0;lIndex<lparam-2;lIndex++)
    	{
    		lRes=lf1+lf2;
    		lf1=lf2;
    		lf2=lRes;
    	}
    
    	return lRes;
    }


  • 相关阅读:
    css区分ie6,7,ff
    轮播插件--可支持视频拖拽和可视区播放
    json无限树----几个月前写的插件
    WEBGL学习笔记二
    记录一些坑
    webGL学习笔记一
    Angular模态框
    Angular指令实践之type等于text的input星号输入
    Angular内置指令
    Angular指令一
  • 原文地址:https://www.cnblogs.com/wlsandwho/p/4202187.html
Copyright © 2011-2022 走看看