为什么我的代码没有在函数内部划分?

Why is my code not dividing inside of the function?

我想使用递归函数创建冰雹序列。但是偶数没有被分割,我想知道我哪里做错了什么?

#include <stdio.h>

int sequence(int n);

int main()
{
    int n = 0;
    printf("\nEnter a number: ");
    scanf("%d", &n);
    printf("\nThe sequence is as follows:");
    sequence(n);
    return 0;
}

int sequence(int n)
{
    printf("%d\t ", n);

    if (n == 1) {
        return 0;
    } else if (n % 2 == 0) {
        n = n / 2;
    } else {
        return n = sequence(n * 3 + 1);
    }
}

该函数在此 else 语句中不执行任何操作

else if (n % 2 == 0)
{
    n = n / 2;
}

定义函数至少要像

int sequence(int n)
{
    printf("%d\t ", n);

    if (n == 1)
    {
        return 0;
    }
    else
    {
        return sequence( n % 2 == 0 ? n / 2 :  n * 3 + 1 );
    }
}

虽然 return 类型的函数似乎没有意义。所以函数可以这样定义

void sequence(int n)
{
    printf("%d\t ", n);

    if ( n != 1 )
    {    
        sequence( n % 2 == 0 ? n / 2 :  n * 3 + 1 );
    }
}