昆仑山:眼中无形心中有穴之穴人合一

夫君子之行,静以修身,俭以养德;非澹泊无以明志,非宁静无以致远。夫学须静也,才须学也;非学无以广才,非志无以成学。怠慢则不能励精,险躁则不能冶性。年与时驰,意与岁去,遂成枯落,多不接世。悲守穷庐,将复何及!

 

数据结构与算法(Java版本)

递归

递归本质上,将原来的问题,转化为更小的同一问题

数组求和

package com.suzhou.wanson.datastructure;

public class Driver {
    public static int sum(int[]arr){
        return sum(arr,0/*左边界*/);
    }
    //计算arr[l,n)这个区间内所有数字的和
    private static int sum(int[]arr,int l){
        if(l==arr.length){
            return 0;//求解最基本问题
        }
        return arr[l]+sum(arr,l+1);//把原问题转化成更小的问题
        //相当于下面三句话
        /**
        int x=sum(arr,1+1); 
        int res=arr[lj+x; 
        return res;*/
    }
    public static void main(String[] args) {
        int[] nums={1,2,3,4,5,6,7,8,9};
        System.out.println(sum(nums));
    }
}

注意递归函数的“宏观”语意
递归函数就是一个函数,完成一个功能
递归函数的调用,本质就是函数调用
只不过调用的函数是自己而已
程序调用的系统栈
递归调用是有代价的:函数调用+系统栈空间

posted on 2018-06-23 00:55  Indian_Mysore  阅读(181)  评论(0编辑  收藏  举报

导航