用while就死循环,用if就没问题,为什么?while和if功能不是一样的吗?各大牛指教一下,新手

Miracle-0128 2017-11-16 10:18:56
...全文
425 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
两水先木示 2017-11-20
  • 打赏
  • 举报
回复
因为while里面没有修改x本身的值,在第一个while里面就永远无法退出循环了。。何况你还有递归!
qq_35223414 2017-11-19
  • 打赏
  • 举报
回复
while是循环 执行一次后会再次判断是否符合条件 符合条件继续执行while内 if不是循环只是条件判断 判断一次后符合条件只运行一次 不符合条件直接跳过
自信男孩 2017-11-17
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <unistd.h>

void deczoct(int x)
{
    if (x > 8) {
        deczoct(x/8);
    }
    printf("%d", x%8);
}

int main(void)
{
    int num;

    scanf("%d", &num);

    printf("After cout: \n");
    deczoct(num);
    putchar(10);
    return 0;
}
参考一下吧 楼主的主要是while循环里没有修改x的值,导致无法停止第二次调用本身。
jena_wy 2017-11-17
  • 打赏
  • 举报
回复
递归没有结束条件。
倚栏|听风 2017-11-17
  • 打赏
  • 举报
回复
哪里一样了啊,一个是循环一个是判断 你记错了吧,while和for还差不多
赵4老师 2017-11-17
  • 打赏
  • 举报
回复
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门! 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出
CT8100 2017-11-16
  • 打赏
  • 举报
回复
while是一只判断-if只判断一次
大米粥哥哥 2017-11-16
  • 打赏
  • 举报
回复
你没有改变x的值 if执行一次就往下执行了 while执行完 条件还满足 继续执行呗

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧