学习目标:
递归的学习和使用。
学习内容:
Java中递归的基本概念, 递归算法,其实就是程序的自身调用。它表现在一段程序中往往会遇到调用自身的一种策略,这样我们就可以把一个大的复杂的问题层层转换为一个小的和原问题相似的问题来求解的这样一种策略。
递归语句很大程度上使代码结构变得更简单。
代码编写:
package datastructure;
/**
* Recursion. A method can (directly or indirectly) invoke itself. The system
* automatically creates a stack for it.
* 递归方法,方法可以调用自身
* @author Weize 1025976860@qq.com
*/
public class Recursion {
/**
*********************
* Sum to N. No loop, however a stack is used.
* 求N的总和,没有循环,但是使用了栈
* @param paraN 停止参数
* The given value.
* @return The sum.
*********************
*/
public static int sumToN(int paraN) {//关于N的求和函数
if (paraN <= 0) {
//Basis.
return 0;
} // Of if
return sumToN(paraN - 1) + paraN;//求N+N-1,直到N=0为止
}// Of sumToN
/**
*********************
* Fibonacci sequence.
*
* @param paraN
* The given value.
* @return The sum.
*********************
*/
public static int fibonacci(int paraN) {
if (paraN <= 0) {
//Negative values are invalid. Index 0 corresponds to the first element 0.
return 0;
} if (paraN == 1) {
//Basis.
return 1;
}//Of if
return fibonacci(paraN - 1) + fibonacci(paraN - 2);
}//Of fibonacci
/**
*********************
* The entrance of the program.
*
* @param args
* Not used now.
*********************
*/
public static void main(String args[]) {
int tempValue = 5;
System.out.println("0 sum to " + tempValue + " = " + sumToN(tempValue));
tempValue = -1;
System.out.println("0 sum to " + tempValue + " = " + sumToN(tempValue));
for(int i = 0; i < 10; i ++) {
System.out.println("Fibonacci " + i + ": " + fibonacci(i));
}//Of for i
}// Of main
}
运行结果:
以斐波那契数列计算结构为例,运算结构如下: