zoukankan      html  css  js  c++  java
  • 2018.3.31 java中的递归

    java中的递归

    1.概念

    	定义一个方法时,出现本方法调用本方法的过程,称之为递归
    

    2.特点

    	必然有一个边界条件
    	使用递归代码往往更简洁,可读性强
    

    3.什么时候使用递归

    n的阶乘和n的累加定义
    	
    	f(n) =1  
    	f(n)=f(n)*f(n-1)
    

    4.普通实现与递归实现的比较

    普通实现
    	//计算5的阶乘
    	public class Demo {
    	public static void main(String[] args) {
    		int sum = 1;
    		for (int i =5; i >=1; i--) {
    			sum *= i;
    		}
    		System.out.println(sum);
    	}
    }
    
    
    
    递归实现:
    /**
     *在main函数外面定义方法,不然会报错
     *
     * 计算5的阶乘(result = 5*4*3*2*1)
     */
    public class Demo {
    	public static void main(String[] args) {
    		System.out.println(f(5));
    	}
    	public static int f(int n) {
    		if (1 == n){
    			return 1;
    		}else{
    			return n * f(n - 1);
    		}
    	}
    }
    
    

    6.按照递归的三个条件来分析

    	边界条件:阶乘,乘到最后一个数,返回1,程序执行到底
    	递归前进段:当前的参数不等于1的时候,继续调用自身;
    	递归返回段:从最大的数开始乘,如果当前参数是5,那么就是5*4,即5*(5-1)即n*(n-1)
    

    7.经典递归算法实例----斐波那契数列

    package com.lanqiao.demo2;
    
    /**
     * 斐波那契序列
     * 
     * @author qichunlin
     *
     */
    public class Test {
    	public static void main(String[] args) {
    		System.out.println(f(4));
    		}
    	
    	public static int f(int n){
    		if(n==1||n==2){
    			return 1;
    		}else{
    			return f(n-1)+f(n-2);
    		}
    	}
    }
    
    
  • 相关阅读:
    ranorex
    vue.js
    逻辑思维
    laravel-luntan
    python学习--基础
    git
    Laravel-高级篇-Auth-数据迁移-数据填充
    Laravel-高级篇-Artisan
    Laravel-表单篇-零散信息
    Laravel-表单篇-controller
  • 原文地址:https://www.cnblogs.com/qichunlin/p/8684345.html
Copyright © 2011-2022 走看看