You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将递归打印数字的代码转为单行三元运算符实现?

当然可以实现!

我们可以把递归逻辑完全封装起来,不依赖外部变量和额外函数,用三元运算符写成简洁的单行代码。这里提供两种符合现代JS规范的方案:

方案1:命名箭头函数(推荐,兼容严格模式)

const printNumbers = (counter = 0) => counter <= 50 ? (console.log(counter), printNumbers(++counter)) : null; printNumbers();

说明:

  • 把计数器counter作为函数参数传入,默认值设为0,彻底摆脱外部变量依赖。
  • 三元运算符的第一个分支用逗号运算符:先执行console.log(counter)打印数字,再递归调用printNumbers(++counter)更新计数器。
  • 当counter > 50时,返回null终止递归流程。

方案2:自执行匿名函数(简洁但需注意环境)

((counter) => counter <= 50 ? (console.log(counter), arguments.callee(++counter)) : void 0)(0);

说明:

  • 直接创建一个自执行的匿名函数,初始传入0作为起始计数器。
  • 用arguments.callee引用当前函数实现递归,但要注意严格模式下arguments.callee会被禁用,所以如果你的代码运行在严格模式环境,优先选方案1。

对比你给出的示例,这两个方案都去掉了外部的counter变量和额外的辅助函数,真正实现了单行、无外部依赖的递归打印逻辑。

内容的提问来源于stack exchange,提问作者user14087540

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 00:17:35