WZ℡T 2018-11-27 08:09 采纳率: 50%
浏览 1106
已采纳

大佬们能给我讲解一下int fact里的运行过程 这里面我看不明白。

#include
int fact(int n)
{
if(n<2)
return n;
else
{
return fact(n/2)*10+n%2;
}
}
int main(void)
{
int n;
printf("Enter n:");
scanf("%d",&n);
printf("%d",fact(n));
return 0;
}

  • 写回答

1条回答 默认 最新

  • 阿里神鲲 2018-11-27 08:49
    关注

    如果n小于2,就直接返回n
    如果大于等于2,就返回:(递归调用fact传入的参数是n/2)*10+n%2

    例如:输入了10:
    第一层:
    return fact(10/2)*10+10%2----------101*10+0=1010
    第二层:
    return fact(5/2)*10+5%2-----------10*10+1=101
    第三层:
    return fact(2/2)*10+2%2-----------1*10+0=10
    第四层:
    return fact(1)--------------1

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?