zoukankan      html  css  js  c++  java
  • java 递归函数

    一、递归函数,通俗的说就是函数本身自己调用自己... 
    如:n!=n(n-1)! 
    你定义函数f(n)=nf(n-1) 
    而f(n-1)又是这个定义的函数。。这就是递归 

    二、为什么要用递归:递归的目的是简化程序设计,使程序易读 

    三、递归的弊端:尽管非递归函数效率高,但较难编程,可读性较差。递归函数的缺点是添加了系统开销,也就是说,每递归一次,栈内存就多占用一截 

    四、递归的条件:需有完毕任务的语句,需满足递归的要求(减小而不是发散) 

    五、递归进阶: 
    1.用递归算n的阶乘: 
      分析:n!=n*(n-1)*(n-2)...*1 
      public int dReturn(int n){ 
         if(n==1){ 
            return 1; 
         }else{ 
            return n*dReturn(n-1); 
         } 
       } 
    2.用递归函数算出1到n的累加:1+2+3+4+..+n 
      public int dReturn(int n){ 
        if(n==1){ 
          return 1; 
        }else{ 
          return n+dReturn(n-1); 
        } 
      } 
    3.要求输出一个序列:1,1,2,3,5,8,11......(每个数为前两个数子之和,要求用递归函数) 
      用java递归来表示一个函数:F(n)=F(n-1)+F(n-2);F(0)=1;F(1)=1; 
       分析:X1=1; X2=1; X3=X1+X2; X4=X2+X3; ... ; Xn=X(n-1)+X(n-2) 
       public int F(int n){ 
        if(n==1){ 
          return 1; 
        }else if(n==2){ 
          return 1; 
        }else{ 
           return F(n-1)+F(n-2); 
        } 
      }  
    4.java用递归方法反向打印一个整数数组中的各个元素 
       public static void  printAll(int index,int[] arr){ 
          System.out.println(arr[index]); 
          if(index > 0){ 
           printAll(--index,arr); 
          }
       }  
       public static void main(String[] args){ 
          int[] arr={1,2,3,4,5}; 
          printAll(arr.lenth-1,arr); 
       } 
    5.编程求解:若一头小母牛,从出生起第四个年头開始每年生一头母牛,按次规律,第 n 年时有多少头母牛? 
       public static int cattle(int n){ 
    if(n<=0){ 
      return 0; 
    }else if(n<=3){ 
      return 1; 
    }else{ 
      return cattle(n-1)+cattle(n-3); 

       } 
       public static void main(String[] args){ 
          int n=10; 
          System.out.println(n+"年后共同拥有"+cattle(n)+"头牛"); 

       } 


    递归、线性递归、尾递归的概念?



  • 相关阅读:
    ReactiveCocoa -函数式编程和响应式编程
    关于即时通讯功能开发技术选型
    cordova 打包的项目里加入微信支付功能编译问题。
    OC和swift互相调用。
    有关 -all_load和-ObjC
    在一个项目中同时使用Swift和Objective-C代码混合编程的方法
    iOS开发中Static和Const关键字的的作用
    开发所有插件必须要这个插件
    phonegap 二维码扫描插件使用
    大数据基础---Kafka深入理解分区副本机制
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4231958.html
Copyright © 2011-2022 走看看