带递归的二进制转换程序
它工作正常,但我无法理解一个陈述的含义
任何人都可以帮我解释一下
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);
}
}
答案 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);
}
}