#include <stdio.h>
void fun(int n)
{
if(n/2)
fun(n/2);
printf("%d",n%2);
}
main()
{
fun(10);
printf("\n");
}
这段代码怎么分析呀,看答案解析说是辗转相除法求一个十进制数的二进制数,怎么理解呀
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注这算是一个递归,我之前回答过这类问题,你可以参考一下
解析看注释~
#include <stdio.h> void fun(int n) { if (n / 2) fun(n / 2); printf("%d", n % 2); } //先传入10,10/2=5为真 //执行下一次fun函数,传入10/2 //传入5,5/2=2为真 //执行下一个fun,传入2 //传入2,2/2=1为真 //执行下一步,fun传入1 //(1/2)不为真,停止递归 //开始执行printf(注意,是从后往前执行的) //n 1 1%2 1 // 2 2%2 0 // 5 5%2 1 // 10 10%2 0 int main() { fun(10); printf("\n"); }如果对你有帮助,还请点个采纳,万分感谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报 编辑记录解决 1无用