使用递归编码整数乘法函数(在C中)

Mad*_*han -11 c recursion

任何人都可以告诉我如何C使用递归编写乘法函数(in )?

Vil*_*lx- 9

好的,我们是原创的.:)

unsigned int mul(unsigned int a, unsigned int b)
{
    if ( !a || !b ) return 0;
    if ( a == 1 ) return b;
    if ( b == 1 ) return a;

    return mul(a-1, b-1)+a+b-1;
}
Run Code Online (Sandbox Code Playgroud)

  • 你好?**无符号**int? (6认同)
  • 看到我的其他答案. (2认同)

Vil*_*lx- 9

如果你真的想给同龄人和你的老师留下深刻的印象,请提交 - 这既是递归的又是快速的!

int mul(int a, int b)
{
    if ( a < 0 ) return -mul(-a,b);
    if ( b < 0 ) return -mul(a,-b);
    if ( b == 0 ) return 0;
    return (mul(a,b>>1)<<1)+(b&1?a:0);
}
Run Code Online (Sandbox Code Playgroud)

补充:作为额外的奖励,这正确处理正,负和0值.

  • 不.XD每当我给作业答案时,我要么用伪代码给它,给它不完整,要么给它如此扭曲和"聪明",要求它的人没有机会解释它是如何工作的(如果他/她决定把它作为他/她自己).:) (7认同)

nan*_*oto 5

这是功能:

int mulitplication(x,y)
{
    if (y==0)
    {
      return 0;
    }
    else
      return x+multiplication(x,y-1);
    }
}
Run Code Online (Sandbox Code Playgroud)