递归理解

递归–递推–动态规划

首先,我的理解这三种都是一种形式、一个思想。包括递推、dp都可以算作是递归。用递归的形式,代码简洁,但是效率低(改进,记忆性递归)。dp,递推代码比较多,但是效率高
下面看我学的几个例题:

上楼梯

题意:小明上楼梯,他一次能上一层、两层、或者三层,问100层楼梯,有多少种走法

  1. 递归分析:每在一层楼都可以分为三种情况,往上走1、走2、走3。反之,每一层都是由三种走上来的。由下面一层、下面两层、下面三层走上来。所以,往下递归,每一层都有三种情况:n-1,n-2,n-3
  2. 递推分析:每一层都是由三种情况得出,那么就可得出递推公式 fn=fn-1+fn-2+fn-3;
  3. 代码如下:
public class 上楼梯 {
	public static void main(String[] args) {
		int n=8 ;
		int t=fbs1(n);
		int a=fbs2(n);
		System.out.println(t);
		System.out.println(a);
	}
//递推
	private static int fbs2(int n) {
		if(n<0)	return 0;
		if(n==1||n==0)	return 1;
		if(n==2)	return 2;
		if(n==3)	return 4;
		int x1=1,x2=2,x3=4;
		for (int i = 4; i <= n; i++) {
			int t=x1;
			x1=x2;
			x2=x3;
			x3=x1+x2+t;
		}
		return x3;
	}
//递归
	private static int fbs1(int n) {
		int m=0;
		if(n==1||n==0) return 1;
		if(n==2) return 2;
		m+=fbs1(n-1);
		m+=fbs1(n-2);
		m+=fbs1(n-3);
		return m;
	}
}

未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值