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

如何不使用除法运算符、循环或递归,基于函数式编程实现除法函数

整数除法的函数式实现方案

原命令式除法的核心逻辑是统计被除数可以被减多少次除数,最终得到的次数即为正整数场景下的整数商,我们可以借助数组高阶函数实现相同逻辑,完全规避循环、递归和除法运算符,符合函数式编程要求:

const divide = (dividend, divisor) => 
  // 生成与被除数长度一致的空数组,用于触发reduce遍历
  Array.from({ length: dividend })
    .reduce(
      // 状态数组第一个元素为剩余值,第二个元素为商计数
      ([remaining, count]) => 
        remaining >= divisor ? [remaining - divisor, count + 1] : [remaining, count],
      // 初始状态:剩余值为被除数,初始计数为0
      [dividend, 0]
    )[1];

console.log(divide(100, 2)); // 输出:50

实现逻辑说明

  • 全程使用纯函数、无副作用的写法,符合函数式编程范式
  • 通过Array.from生成指定长度的数组,无需手动构造循环
  • 借助reduce方法维护遍历过程中的状态,不需要额外的可变变量,也不需要递归逻辑
  • 最终实现效果和原命令式函数完全一致,仅支持正整数的整数除法运算,如果需要兼容负数、0等边界场景,可额外补充参数校验逻辑调整状态判断规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:54:01