国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > J2SE学习笔记(1)――递归函数

J2SE学习笔记(1)――递归函数

来源:程序员人生   发布时间:2015-01-06 08:23:33 阅读次数:2763次

甚么是递归函数


    递归函数即自调用函数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身。 

  

实例分析


    后1个数是前两个数之和,求第40个数

public class Fab2 { public static void main(String arg[]) { System.out.println(f(40)); } public static int f(int n){ if(n==1 || n==2){ return 1; } else { return f(n⑴) + f(n⑵); } } }

    运行结果:



    下面介绍1下该函数的调用进程,为了简单起见,以求f(5)为例

     非递归函数实现上述功能

public class Fab{ public static void main(String[] args){ System.out.println(f(5)); } public static long f(int index){ if (index < 1){ System.out.println("wrrong"); return ⑴; } if (index == 1 || index == 2){ return 1; } long f1 = 1; long f2 = 1; long f = 0; for (int i = 0; i <index⑵; i++){ f = f1 + f2; f1 = f2; f2 = f; } return f; } }

    运行结果




递归函数的特点


    (1)原始问题转化成解决方法相同的新问题

    (2)新问题的范围比原始问题小

    (3)新问题又可以转化为解决方法相同的范围更小的新问题,直接至终止条件为止


递归函数条件


    (1)存在递归结束条件及结束时的值

    (2)能用递归情势表示,且递归向终止条件发展


递归反应的思惟




    即大事化小,小事化了。


递归函数与非递归函数的比较


    (1)递归的目的是简化程序设计,使程序易读。   

    但递归增加了系统开消。 时间上, 履行调用与返回的额外工作要占用CPU时间。空间上,随着每递归1次,栈

内存就多占用1截。   

   (2)相应的非递归函数虽然效力高,但却比较难编程,而且相对来讲可读性差。   

   现代程序设计的目标主要是可读性好。随着计算机硬件性能的不断提高,程序在更多的场合优先斟酌可读而不是

高效,所以,鼓励用递归函数实现程序思想。



生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生