递归函数之JAVA演绎--http://blog.csdn.net/lxgljj/archive/2004/10/21/145147.aspx
数据结构与面向对象程序设计—— C++版(第3版) 9.1 递归函数 --http://book.csdn.net/bookfiles/461/10046116316.shtml
如第二篇文章所说:
递归思想
假设一个问题有一个或多个分支条件,而其中的某些子任务是最开始时试图解决的同一问题的简单版本,那么这些子任务通过递归调用来解决。
函数在进行递归调用时,必须要有一个或多个分支条件,在这些分支条件内,整个计算不需要递归来完成。这些没有递归的分支条件称为停止条件或基本条件。
设计递归算法,一定要有结束的条件,同时找到反复出现的一个模式。
附上的Java代码中的代码单元来自上两篇文章,但是我综合在了一起
- //计算斐波那契数列
- class test1 {
- int func(int x) {
- if (x > 2)
- return (func(x - 1) + func(x - 2));
- else
- return 1;
- }
- }
- //计算若一头小母牛,从出生起第四个年头开始每年生一头母牛,按次规律,第n年时有多少头母牛?
- class test2 {
- int cattle(int n){
- if(n<=0) return 0;
- if(n<=3) return 1;
- return cattle(n-1)+ cattle(n-3); //此处是递归要好好理解。
- }
- }
- //纵向输出数字的每位
- class test3 {
- void write_vertical(int number){
- if (number < 10)
- System.out.println(number); // Write the one digit.
- else {
- write_vertical(number/10); // Write all but the last digit.
- System.out.println(number % 10); // Write the last digit.
- }
- }
- }
- public class recursion {
- public static void main(String[] args){
- int x1 = 1;
- int sum = 0;
- int n = 5;
- test1 t1 = new test1();
- for (int i = 1; i <= n; i++) {
- x1 = t1.func(i);
- System.out.print(x1+":");
- sum = sum + x1;
- }
- System.out.println("sum=" + sum);
- int catYear = 15;
- test2 t2 = new test2();
- System.out.println("test2:"+t2.cattle(catYear));
- int testNumber =1234;
- test3 t3 = new test3();
- System.out.println("test3:"+testNumber);
- t3.write_vertical(testNumber);
- }
- }