gpt4 book ai didi

javascript - 为什么这个递归 javascript 函数会返回它所做的事情?

转载 作者:行者123 更新时间:2023-11-28 13:18:03 24 4
gpt4 key购买 nike

var fn = function even (n) {
if (n === 0) {
return true
}
else return !even(n - 1)
}

fn(5)//=> false

fn(2) //=> true

为什么这个函数会这样工作?当我在参数为 5 时单步执行它时,它似乎会调用自身,直到 n 为零,这将返回 true,但它返回 false。

最佳答案

每个递归步骤都会向前一个结果添加一个否定:

f(0) = true
f(1) = !f(0) = !true = false
f(2) = !f(1) = !!f(0) = !!true = !false = true

依此类推,对于 f(5) 你可以得到

f(5)
!f(4)
!!f(3)
!!!f(2)
!!!!f(1)
!!!!!f(0)
!!!!(!true)
!!!(!false)
!!(!true)
!(!false)
!true
false

关于javascript - 为什么这个递归 javascript 函数会返回它所做的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35941393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com