鱼C论坛

 找回密码
 立即注册
查看: 1879|回复: 2

[已解决]角谷定理

[复制链接]
发表于 2018-10-22 21:55:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过有限次后,总会得到自然数1。给定任意自然数,输出这一过程。如对于5,该过程为16 8 4 2 1,需要递归来实现。

疑惑:已经设置过断点调试,不知为什么会打印图中的结果

代码:
#include<iostream>

int th(int num)
{
        if (num == 1)
        {
                printf("1");
        }
        else if (num % 2 == 0)
        {
                num = num / 2;
                printf("%d", num);
                return th(num);
        }
        else
        {
                num = num * 3 + 1;
                printf("%d", num);
                return th(num);
        }
}

int main()
{
        int n;
        printf("请输入一个数字:");
        scanf_s("%d", &n);
        th(n);
        system("pause");
        return 0;
}
最佳答案
2018-10-22 21:59:00
你也没换行就是这样啊,5*3+1打印16
16/2打印8,8/2打印4,4/2打印2,2/2打印1
1在你函数里还要打印1
7H5S_VT1P5H5CX{~_YI1T6Q.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-22 21:59:00 | 显示全部楼层    本楼为最佳答案   
你也没换行就是这样啊,5*3+1打印16
16/2打印8,8/2打印4,4/2打印2,2/2打印1
1在你函数里还要打印1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-22 22:22:23 | 显示全部楼层
#include<iostream>

void th(int num)    //void
{
    if (num == 1)
    {
            return;          // return
    }
    else if (num % 2 == 0)
    {
        num = num / 2;
        printf("%d\n", num);    // \n
        return th(num);
    }
    else 
    {
        num = num * 3 + 1;
        printf("%d\n", num);   // \n
        return th(num);
    }
}

int main()
{
    int n;
    printf("请输入一个数字:");
    scanf_s("%d", &n);
    th(n);
    system("pause");
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-2 18:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表