• Java面向对象-递归


    Java面向对象-递归

    递归,就是程序调用自身,我们讲的是方法递归调用,也就是在方法里自己调用自己;

    我们给出一个案例,求阶乘  1*2*3*...*(n-1)*n 

    我们用非递归和递归方式分别实现下,大家可以比较下;

    我们先用非递归方式 大家肯定会想到用循环实现,

    上代码:

     1 package com.java1234.chap03.sec03;
     2  
     3 public class Demo03 {
     4  
     5     /**
     6      * 非递归
     7      * @param n
     8      * @return
     9      */
    10     static long notDiGui(int n){
    11         long result=1;
    12         for(int i=1;i<=n;i++){
    13             result=result*i;
    14         }
    15         return result;
    16     }
    17      
    18      
    19      
    20     public static void main(String[] args) {
    21         System.out.println(Demo03.notDiGui(5));
    22     }
    23 }

    递归的话 我们首先要找到规律 还有必须有一个出口;

    我们来先说说规律 比如求5的阶乘

    我们会发现规律 

    n=5   F(n)=F(n-1)*5  即F(5)=F(4)*5

    n=4   F(n)=F(n-1)*4  即F(4)=F(3)*4

    n=3   F(n)=F(n-1)*3  即F(3)=F(2)*3

    n=2   F(n)=F(n-1)*2  即F(2)=F(1)*2

    n=1   1

    上代码:

     1 package com.java1234.chap03.sec03;
     2  
     3 public class Demo03 {
     4  
     5     /**
     6      * 递归方式
     7      * @param n
     8      * @return
     9      */
    10     static long diGui(int n){
    11         if(n==1){
    12             return 1;
    13         }
    14         return diGui(n-1)*n;
    15     }
    16      
    17      
    18     public static void main(String[] args) {
    19         System.out.println(Demo03.diGui(5));
    20     }
    21 }
  • 相关阅读:
    4.iptables 网络防火墙
    iterator not dereferencable问题
    秒杀多线程系列中的题目
    说说僵尸和孤儿进程的那点儿事
    Linux的fork()写时复制原则(转)
    linux进程原语之fork()
    linux--多进程进行文件拷贝
    哈夫曼树与哈夫曼编码
    csp公共钥匙盒
    字典树
  • 原文地址:https://www.cnblogs.com/eaglezb/p/5970226.html
Copyright © 2020-2023  润新知