javascript - 我如何向第三方解释最后一行
问题描述
这段代码有一些东西我很难向第三方解释。当递归调用我们的函数时,从 n 中减去 2 背后的逻辑是什么?
function is_even(n) {
if (n<0) {
return Math.abs(n)
}
if (n=== 0) {
return true;
} else if (n === 1) {
return false;
} else {
return is_even(num - 2);
}
}
console.log(is_even(8));
解决方案
所以这里的逻辑是,你基本上可以通过从它减去 2 直到它是 0 或 1 来判断某些东西是奇数还是偶数。
你减去 2 因为如果你再减去任何东西,你可能会过冲并最终得到一个负数。通过减去两个,无论您从哪个数字开始,您总是会得到 1 或 0。
如果你从 9 点开始
is_even(9)
9 - 2 = 7 | is_even(7)
7 - 2 = 5 | is_even(5)
5 - 2 = 3 | is_even(3)
3 - 2 = 1 => 1 indicates it is odd and the function will return
也许写出一些像上面这样的例子是向第三方解释的好方法。
推荐阅读
- c++ - 选择排序程序未正确排序
- c# - 在超大文件中搜索(Open Academic Graph / Microsoft Academic Graph)
- javascript - 将保存在 HTML 中的图片显示到 Vue.js 页面中
- datatables - JQuery 数据表:卡中不是全尺寸
- javascript - UnhandledPromiseRejectionWarning:TypeError:无法在客户端读取未定义的属性“通道”。
- reactjs - 将 Redux 与 useEffect Hook 混合使用
- php - Angular 9(使用 --proxy-config 运行)POST 返回 301,然后是 OPTIONS,然后 GET 没有 POST 正文发送到服务器
- django-forms - 在 Django 中为 Meta 类添加 modelForm 验证约束
- java - 使用相机意图捕获图像后,Android 应用程序崩溃
- angular - ngrxLet 是否替代了智能和愚蠢的组件风格?