gpt4 book ai didi

c - 调试递归函数

转载 作者:行者123 更新时间:2023-12-04 12:19:49 24 4
gpt4 key购买 nike

   #include<stdio.h>
void binary(int n)
{
int bin=0;
if(n!=0)
{
bin=n%2;
binary(n/2);
}
printf("%d",bin);
}

void main()
{
int a;
printf("Decimal value: ");
scanf("%d",&a);
binary(a);
}

当我尝试运行上面的代码时,它输出十进制数 a 和一个 0 的二进制值。由于我在这里使用了递归函数,它还将bin(即0)的初始值放入堆栈并打印0 还有。但我只想显示 0 之前的二进制值。

如果有人建议我如何让这个函数不在堆栈上存储 bin 的初始值,我会很高兴。

最佳答案

试试这个。

#include<stdio.h>
void binary(int n)
{
bin=n%2;
if(n/2!=0)
binary(n/2);

printf("%d",bin);
}
void main()
{
int a;
printf("Decimal value: ");
scanf("%d",&a);
binary(a);
}

因为它在调用 binary() 之前检查是否 n/2 == 0,所以它从不打印初始的 0。

关于c - 调试递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20942248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com