#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无用
悬赏问题
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度
- ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
- ¥15 ETLCloud 处理json多层级问题
- ¥15 matlab中使用gurobi时报错
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么