递归——求斐波那契数列:兔子序列
利用递归函数求斐波那契数列(兔子序列) 1、1、2、3、5、8、13、21…求第n个数是几,n任意一个数大家可以自定义,比如10,20等
<script>
function Fibonacci(n) {
if (n == 1 || n == 2) {
return 1
} else if (n > 1) {
return Fibonacci(n - 1) + Fibonacci(n - 2)
}
}
let num = prompt('请输入一个数')
// Fibonacci(5)
console.log(Fibonacci(num))
</script>
- [ 第一个数和第二个数固定等于1 第三个数等于前两数之和…]
- num1 = 1
- num2 = 1
- num3 = num1+ num2 = 1 + 1
- num4=num3+num2=num2+num1+num2 = 1+ 1+1
- num5=num4+num3
=num3+num2+num1+num2
=num1+num2+num2+num1+num2
=1 + 1 + 1 + 1 + 1 - num6=num5+num4
=num4+num3+num3+num2
=num3+num2+num2+num1+num2+num1+num2
=num2+num1+num2+num2+num1+num2+num1+num2
=1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 - …
- numx = num(x-1)+num(x-2)
因为有固定前两位数为1,需要判断,当n == 1 || n == 2时,返回 1
当n>1 时,执行numx = num(x-1)+num(x-2) ,num(x-1)与num(x-2)再分别进入递归 再次调用函数,直到num(x-1)与num(x-2)中 num()括号中的数等于3时,相当于num3 = num(3-1)+ num(3-2) = num1+ num2 , 此时x就等于1或者2不再执行numx = num(x-1)+num(x-2)代码,返回1.通过一层一层返回有多个num1,num2的和得到当前位数的数值。
欢迎提问~
alert('so easy!')