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

求C语言仅用加法实现两数相乘的递归函数(代码需修正)

递归乘法函数的修正方案

你写的函数问题出在递归返回时没有累加当前的num2,乘法的本质是重复加法,比如mult(2,5)其实是5 + 5,也就是5 + mult(1,5),而mult(1,5)是5 + mult(0,5),mult(0,5)返回0,这样才能得到正确结果。

修正后的代码如下:

int mult(unsigned int num1, int num2) {
    if (num1 == 0) return 0;
    // 每次递归把num2累加,同时让num1减1,直到num1为0
    return num2 + mult(num1 - 1, num2);
}

举个例子走一遍逻辑:

  • mult(2,5) → 返回 5 + mult(1,5)
  • mult(1,5) → 返回 5 + mult(0,5)
  • mult(0,5) → 返回0
  • 最终计算就是5+5+0=10,符合预期。

另外这个逻辑也支持num2为负数的情况,比如mult(3,-2)会返回-2 + (-2) + (-2) + 0 = -6,和实际乘积一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:25:33