【发布时间】:2014-01-31 08:47:03
【问题描述】:
我正在尝试打印输入的整数的二进制数,从 0 开始计数(例如 0,1,10,11,100... 到输入的数字)我已经完成了大部分编码,我只是在苦苦挣扎我的 print Binary 代码中的两个递归调用:它一次打印出每个数字 1 或 0,直到它需要转到下一行。我想知道是否有人可以查看我的代码并告诉我应该做什么? 代码:
#include <stdio.h>
int biggestPower2(int);
void printBinary(int, int);
int main()
{
int i;
int input;
printf("Enter the number to count up to: ");
scanf("%d", &input);
for (i = 0; i<=input; i++)
{
printBinary(i, biggestPower2(i));
}
}
int biggestPower2(int decimal)
{
if ((decimal == 0)||(decimal == 1))
{
return 1;
}
else
{
return 2*biggestPower2(decimal/2);
}
}
void printBinary(int decimal, int power2)
{
int nextDigit;
if (power2 == 1)
{
printf("%d\n", decimal);
}
else
{
nextDigit = decimal/power2;
printf("%d", nextDigit);
if (nextDigit == 1)
{
printBinary(decimal%2, power2/2);
}
else
{
printBinary((decimal)%2, power2/1);
}
}
}
【问题讨论】:
-
你进入了无限递归。使用调试器,一步一步执行你的程序,你就会明白为什么了。
-
顺便说一句,这里没有理由使用递归。
-
这不是无限递归,数字只是不正确(除非我把它复制到这个错误),我也知道它不需要,但它是我的当然需要我
-
其实你是对的,不是无限递归。整个算法都是错的。