使用递归实现#include <iostream>using namespace std;void dectobin(int n) { if (n > 1) { dectobin(n / 2); } cout << n % 2;}int main() { int n; cin >> n; dectobin(n); return 0;}
在递归解决方案中,我们定义了一个名为 dectobin 的函数,该函数将整数 n 作为输入参数。如果 n 大于1,则递归地调用 dectobin 函数并传入 n/2 作为参数。然后,打印 n 对2取余的结果,即二进制位的值。
不使用递归实现#include <iostream>using namespace std;void dectobin(int n) { int binary[32]; // 存储二进制位的数组 int i = 0; while (n > 0) { binary[i] = n % 2; n = n / 2; i++; } for (int j = i - 1; j >= 0; j--) { cout << binary[j]; }}int main() { int n; cin >> n; dectobin(n); return 0;}
在非递归解决方案中,我们使用一个数组 binary 来存储二进制位的值。通过循环将 n 对2取余并更新 n 和数组 binary,直到 n 变为0。然后,从数组的末尾开始遍历并打印二进制位的值。
这两个解决方案都能将非负整数转换为二进制并按照要求进行输出。
希望这些解决方案对你有帮助。如果你还有其他问题,请随时提问。 |