当前位置:首页 » 编程语言

【Java笔记】——有趣的递归算法

2015-08-28 20:11 本站整理 浏览(199)

在Java学习开始就学习到了递归,以前经常听到递归,但是却没有真正的了解过递归。学习是不断的重复的,在最初的时候,自己所听说到的不了解的,以后肯定会学到。但是前期这个了解的阶段是不可少的,现在体会是越来越深了。这篇博客就简单介绍一下递归算法,首先介绍什么是递归,然后是递归算法的代码展示,最后呈现递归的结果。

什么是递归定义

递归是自身调用的一种编程技巧,递归作为一种算法在程序设计语言中广泛应用。

优点一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序,就可描述出解题过程所需要的多次重复计算,大大的减少了程序的代码量。

特点递归需要有边界条件、递归前进段和递归返回段,当边界条件符合时,递归前进;边界条件不符合时,递归返回。

代码展示斐波那契数列是典型的递归实现,即1,1,2,3,5,8,13,21……,就是说前一个数加上这个数等于下一个数的值。用递归算法计算哪个位置上的值是什么,代码展示如下:

<span style="font-family:KaiTi_GB2312;font-size:18px;">public class Fibonacci{
	public static void main(String arg[]){
		System.out.println(f(40));	
	}
		
	public static int f(int n){
		if(n==1 || n==2){   //如果在第一和第二个位置,则返回1
			return 1;	
		} else {       //如果在其他位置则是要n-1位置上的值加上n-2位置上的值得到n位置上的值
			return f(n-1)+f(n-2);	 //也就是前两个位置的值和前一个位置的值的和得到这个位置的值
		}	
			  
	}
}</span>
在Fibonacci类中有一个方法f,它有一个参数是int n,n代表的是数列的位置,也就是第几个数,然后这个方法是计算在这个位置上的数的值是多少。然后有一个main方法,传入一个参数就可以计算该位置上的值。这个方法的计算方式就如注释中所示,也就是前两个位置的值和前一个位置的值的和得到这个位置的值。

递归结果首先计算一个简单的验证一下,我输入的n为5,看输出结果,在该数列的第五个位置的值就是5,说明方法是正确的。

下面就来介绍一下第40位上面的值,结果为102334155.

总结

递归的关键就是要有边界条件,然后进行自身调用,就是说自身调用自身方法,但是不能无限制。学习一个过程,从不了解到了解,从不认识到认识,这个过程就是在一直经历。从开始的时候只是听说递归,到现在真正了解到递归,才发现其实并不是什么都像自己想的那么难,只要了解了原理,自然就都不是问题了。