JAVA经典算法之递归算法

什么是递归

首先我们可以在非负整数集上定义一个函数f,它满足f(0)=0,f(x)=2*f(x-1)+x^2;从这个定义中我们可以看到f(1)=1,f(2)=6,f(3)=21;如同这样在方法体中直接或者间接调用自身的方法就叫做递归方法

public class CircleText {
public static void main(String[] args) {
		System.out.print(circle(3));
	}
	public static int circle(int x){
			if(x==0) {
				return 0;
			}
			else {
				return 2*circle(x-1)+x^2;
			}
		}
}

运行结果为21

递归适合解决的问题:

把一个复杂的问题分解多个缩小了规模的相同问题;

递归的四条基本法则:

1.基准情形:

必须有基准情形,它无需递归就能解出。(递归方法一定要有一个结束条件)

2.不断推进:

对于那些需要递归求解的情形,每一次递归调用都必须朝着基准情形推进。

3.设计法则:

假设所有的递归调用都能运行。

4.合成效益法则:

在求解一个问题的同一种实例时,切勿在不同的递归调用中做重复的工作。

例:写一个使用递归累加求和的方法:


//递归求和
	public static int sum(int x) {
		if(x==1) {
			return 1;
		}else {
			return sum(x-1)+x;
		}
		
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值