首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的Collatz序列的C程序不打印最终的值(1)?

为什么我的Collatz序列的C程序不打印最终的值(1)?
EN

Stack Overflow用户
提问于 2019-11-17 00:52:23
回答 1查看 21关注 0票数 0

我目前正在为C上的collatz序列编写一个程序,但是最后一个值1没有打印出来。例如,当我输入8时,结果必须是8 4 2 1,但它只打印8 4 2,或者当我输入5时,它只打印5 16 8 4 2。我应该在while ( )中放入什么内容来打印完整的答案?谢谢你!!

代码语言:javascript
复制
void 
CollatzSequence(int n)
{

    int x = 1;

    do {
    x++;
        printf("%3d", n);
        if (n%2==0)
            n /= 2;
        else 
            n = 3 * n + 1;
    }
    while (  );

    printf("\n"); 
}

int 
main()
{
    int n;

    do {
        printf("Input an integer greater than 0: ");
        scanf("%d", &n);

        if (n <= 0)
            printf("Invalid input. Try again.\n");
    } while (n <= 0);

    CollatzSequence(n);

    return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2019-11-17 01:15:29

代码需要新的循环退出条件。

一旦打印了1,循环就完成了。

示例如下。

代码语言:javascript
复制
void CollatzSequence(int n) {
  for (;;) {
    printf("%3d", n);
    if (n == 1)
      break;
    if (n % 2 == 0)
      n /= 2;
    else
      n = 3 * n + 1;
  }
  printf("\n");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58893022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档