递归函数C乘以4的问题

时间:2018-11-02 12:18:53

标签: c recursion

我应该为学校编写一个用C乘以4的程序,但我无法使其正常工作。当我输入2时,我得到20,当我输入3时,它是84,当我输入4时,它是340,依此类推,为什么?

#include <stdio.h>

int multi(int i)
{
    if (i == 1) {
        return 4; 
    } 
    if (i == 0) {
    return 0;
    }
    if (i > 1) {
    return (multi(i-1)*4)+4;
    }
}

int main()
{
    int i;

    printf("type a numer for multiplication by 4\n");
    scanf("%d",&i);
    printf("%d * 4 is %d\n",i, multi(i));
}

1 个答案:

答案 0 :(得分:2)

XY乘以X Y的次数。

X * Y = X + X + X ...Y times

所以改变

return (multi(i-1)*4)+4;

return multi(i-1) + 4;

,它将按预期的方式乘以4。

但是,如果您想将X提高到Y的幂,则必须将X Y倍增。

X to the power of Y = X * X * X...Y times

在这种情况下,您还需要对代码进行一些其他更改,我将在练习中留给您