首先看看这两篇文章:

递归函数之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代码中的代码单元来自上两篇文章,但是我综合在了一起

  1. //计算斐波那契数列
  2. class test1 {       
  3.     int func(int x) {
  4.             if (x > 2)
  5.               return (func(x - 1) + func(x - 2));
  6.             else
  7.               return 1;
  8.           } 
  9. }
  10. //计算若一头小母牛,从出生起第四个年头开始每年生一头母牛,按次规律,第n年时有多少头母牛?
  11. class test2 {
  12.        int cattle(int n){
  13.         if(n<=0) return 0;
  14.         if(n<=3) return 1;
  15.         return cattle(n-1)+ cattle(n-3); //此处是递归要好好理解。   
  16.       }
  17. }
  18. //纵向输出数字的每位
  19. class test3 {
  20.     void write_vertical(int number){    
  21.         if (number < 10)
  22.             System.out.println(number); // Write the one digit.
  23.         else  {
  24.             write_vertical(number/10); // Write all but the last digit.
  25.             System.out.println(number % 10); // Write the last digit.
  26.         }
  27.     }
  28. }
  29. public class recursion {
  30. public static void main(String[] args){
  31.     int x1 = 1;
  32.     int sum = 0;
  33.     int n = 5; 
  34.     test1 t1 = new test1();    
  35.     for (int i = 1; i <= n; i++) {
  36.       x1 = t1.func(i);
  37.       System.out.print(x1+":");
  38.       sum = sum + x1;
  39.     }
  40.     System.out.println("sum=" + sum);   
  41.     int catYear = 15;
  42.     test2 t2 = new test2();
  43.     System.out.println("test2:"+t2.cattle(catYear));
  44.     
  45.     int testNumber =1234;
  46.     test3 t3 = new test3();
  47.     System.out.println("test3:"+testNumber);
  48.     t3.write_vertical(testNumber);
  49.    }
  50. }