JS解决上楼梯问题和不死兔子问题

1、上楼梯问题:

楼梯上有n阶台阶,上楼时可以一步上1阶,也可以一步上两阶,编写算法计算共有多少种不同的上楼梯的方法。
只有一阶楼梯时有一种上法 --> 1
有两阶时有两种上法 --> 1->1 | 2
有三阶时有三种上法 --> 1->1->1 | 2-> | 1->2
不难看出这是一个斐波拉契数列所以有规律为 1,2,3,5,8,13…
直接上代码:
function getNumN(n){
		if(n == 1)
			return 1
		if(n == 2)
			return 2
		<!--N阶台阶有fn(n-1)+fn(n-2)种上法 -->
		return getNumN(n-1) + getNumN(n-2)
	}
	function numL(){
		let num = document.getElementById("num").value;
		console.log(`上到第${num}个台阶有${getNumN(num)}种方法`)
	}

2、不死兔问题

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月的兔子对数为多少?
一月 | 二月 | 三月 | 四月
一只 | 一只 | 两只 | 三只
和上楼梯问题一样这是一个标准的斐波拉契数列规律为1,1,2,3,5,8
代码:
function getRbtN(n){
		if(n <= 2)
			return 1
		return getRbtN(n-1) + getRbtN(n-2)
	}
	function rbt(){
		let num = document.getElementById("rbt").value;
		console.log(`${num}个月有${getRbtN(num)}对兔子`)
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值