Java 递归的简单解释

当一个函数用它自己来定义的时候就称为是递归的。–《数据结构与算法分析java语言描述》
例如:我们可以在非负整数集上定义一个函数f,满足f(0)=0且f(x)=2f(x-1)+x*x。可以得到f(1)=1,f(2)=6,f(3)=21。

public int f(int x){
	if(x == 0){
		return 0;
	}else{
		return 2 * f(x-1) + x * x;
	}
}

基本法则
1.基准情况:必须要有某些基准的情形,不用递归就能求解。
2.不断推进:对于那些要递归求解的情形,递归调用必须总能朝着一个基准情形推进。

  • 当x=0时可以算出而不用递归。和数学公式f(x)=2f(x-1)+x*x一样,若没有f(0)=0这个事实在,这个公式就没有意义。Java的递归若没有基准情况也是毫无意义。上述代码,当x=0时返回0,就是基准情况。
  • f(4)需要执行f(3),因此要执行f(2),又要另外执行f(1),因此,2*f(0)+1得到f(1)=1。此时f(0)必须被赋值。由于属于基准情况,我们事先得知f(0)=0。从而f(1)=1。然后f(2)、f(3)、f(4)等的值都能够计算出来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值