无法理解c中递归的二进制程序的return语句的计算

时间:2017-09-21 18:02:43

标签: function recursion binary return

带递归的二进制转换程序

它工作正常,但我无法理解一个陈述的含义

任何人都可以帮我解释一下

return(num%2)+ 10 * binary_conversion(num / 2); 而输入13

我很困惑得到这样的数字= 13; 13%2 = 1 + 10 * 6 = 66,像计算一样愚蠢

int binary_conversion(int);

int main()
{
   int num, bin;

   printf("Enter a decimal number: ");
   scanf("%d", &num);
   bin = binary_conversion(num);
   printf("The binary equivalent of %d is %d\n", num, bin);
}

int binary_conversion(int num)
{
    if (num == 0)
    {
        return 0;
    }
    else
    {
        return (num % 2) + 10 * binary_conversion(num / 2);
    }
}

1 个答案:

答案 0 :(得分:0)

您的困惑源于不理解递归的操作。现在是时候用 print 语句来讨论这个功能了。这将允许您遵循例程的控制和数据流。

int binary_conversion(int num)
{
    printf("ENTER num = %d\n", num);
    if (num == 0)
    {
        printf("BASE CASE returns 0\n");
        return 0;
    }
    else
    {
        printf("RECURSION: new bit = %d, recur on %d\n", num % 2, num / 2);
        return (num % 2) + 10 * binary_conversion(num / 2);
    }
}