• 递归函数及Java范例


    首先看看这两篇文章:
    递归函数之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<=0return 0;
    14.         if(n<=3return 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. }

  • 相关阅读:
    What is Continuous Integration?
    10 Essential TypeScript Tips And Tricks For Angular Devs
    javascript 的事件绑定和取消事件
    Directive Controller And Link Timing In AngularJS
    做事情的态度——做精做细
    How to simplify a PHP code with the help of the façade pattern?
    Can we say objects have attributes, states and behaviors?
    represent states with objects
    【转】一次是不算数的
    nyoj27-水池数目 (求连通块数目)【dfs】
  • 原文地址:https://www.cnblogs.com/ainima/p/6331410.html
Copyright © 2020-2023  润新知