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

如何编写不使用*运算符的两自然数相乘函数?求更优实现方案

更符合规则的自然数乘积实现方案

你当前的代码存在两个问题:一是依赖for循环和range(),这两者不属于规则允许的仅加1、赋值、比较操作范畴;二是主函数调用时存在拼写错误(mulitplication_of_ab应为multiplication_of_ab)。

以下是完全贴合规则的实现,仅使用允许的操作:

def multiplication_of_ab(a, b):
    result = 0
    # 外层循环:控制累加b次
    counter_b = 0
    while counter_b < b:
        # 内层循环:通过a次加1实现累加a到结果
        counter_a = 0
        while counter_a < a:
            result += 1
            counter_a += 1
        counter_b += 1
    return result

if __name__ == "__main__":
    print(multiplication_of_ab(3, 4))  # 输出12

进一步优化(减少循环次数)

利用乘法交换律,我们可以先比较a和b的大小,选择较小的数作为内层循环的次数,减少总循环步数,这同样符合规则:

def multiplication_of_ab(a, b):
    result = 0
    # 交换a和b,让较小的数作为内层循环次数,提升效率
    if a > b:
        a, b = b, a
    counter_b = 0
    while counter_b < b:
        counter_a = 0
        while counter_a < a:
            result += 1
            counter_a += 1
        counter_b += 1
    return result

if __name__ == "__main__":
    print(multiplication_of_ab(4, 3))  # 输出12

这两个实现完全遵循规则:所有循环用while(仅依赖比较操作控制终止),累加完全通过+1实现,没有使用任何额外语法或函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:31:01