【发布时间】:2017-10-13 01:05:31
【问题描述】:
我必须编写一个没有for 或while 的递归函数
打印从 0 到给定整数的所有二进制数:
例如如果整数是7 输出是这样的:
(000)
(001)
(010)
(011)
(100)
(101)
(110)
(111)
这是我尝试过的代码:
#include <stdio.h>
/* function declaration */
int print_binary_number(int decimalNo,int count,int arr[]);
int main ()
{
int a;
printf("\nPlease enter an integer:\n");
scanf("%d",&a);
print_binary_number(a,0,0);
return 0;
}
int print_binary_number(int decimalNo,int count,int arr[])
{
int binaryNo,remainder,factor = 1,c;
if (decimalNo == 0) {
return 0;
printf("000");
}
if(decimalNo != 0){
remainder = decimalNo % 2;
arr[count]=remainder;
binaryNo = (binaryNo + (remainder * factor));
factor = factor * 10;
print_binary_number(decimalNo - 1,count,arr);
c=1+print_binary_number(decimalNo / 2,count++,arr);
}
printf("%d",arr[count]);
return 0;
}
【问题讨论】:
-
到目前为止你尝试过什么?为什么要标记 C# 和 C?选择一种语言。
-
我懂两种语言,我需要 c 或 c# 方面的帮助,我写了一个程序,但它不起作用::
-
贴出不起作用的代码。
-
我编辑帖子
-
您的问题到底是什么?您发布的代码没有按您的预期工作吗?你得到了什么结果?
标签: c recursion binary decimal