数据结构与算法(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 阅读(183) 评论(0) 编辑 收藏 举报