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)+"头牛"); 

       } 


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



  • 相关阅读:
    Minimum Depth of Binary Tree leetcode java
    Maximum Depth of Binary Tree leetcode java
    Symmetric Tree leetcode java
    Same Tree leetcode java
    Binary Tree Postorder Traversal leetcode java
    Binary Tree Preorder Traversal leetcode java
    Binary Tree Inorder Traversal leetcode java
    Combinations leetcode java
    一键清除Centos iptables 防火墙所有规则
    阿里云centos7.7x64安装open,并配置ip转发和nat伪装
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4021064.html
Copyright © 2011-2022 走看看