带十进制输入的递归函数打印从零到n的所有数字以二进制形式输出

Err*_*404 1 c recursion

我的作业是编写一个递归函数,打印从零到n输入整数的所有二进制数.禁止使用循环,静态变量,数组,全局变量.

例如,如果输入为7,则输出应为:

000
001
010
011
100
101
110
111
Run Code Online (Sandbox Code Playgroud)

我的输出:

1
10
11
100
101
110
111
Run Code Online (Sandbox Code Playgroud)

如何用这些零修复输出?

这是我的代码:

#include <stdio.h>


void convert(int num)//converts decimal number to binary
{
    if(num>0)
    {
    convert(num/2);
    printf("%d", num%2);
    }
}

void print_binary_number(int num)
{
    if(num<0)
       return;
    print_binary_number(num-1);
     printf("\n");
    convert(num);

}

int main()
{

    int num;
    printf("Please enter an integer:");
    scanf("%d", &num);
    print_binary_number(num);
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

mel*_*ene 6

这是我的解决方案(对代码的更改很少):

#include <stdio.h>


void convert(int num, int limit)
{
    if(limit>0)
    {
        convert(num/2, limit/2);
        printf("%d", num%2);
    }
}

void print_binary_number(int num, int limit)
{
    if(num>limit)
        return;
    convert(num, limit);
    printf("\n");
    print_binary_number(num+1, limit);
}

int main()
{

    int num;
    printf("Please enter an integer:");
    scanf("%d", &num);
    print_binary_number(0, num);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

convert函数现在需要两个参数而不是一个:除了要打印的数字,它还接收limit用户输入和循环的最终值.它用于num生成二进制数字,但它用于limit决定何时停止打印.这具有产生零的效果,直到limit达到大小.