C语言 为什么我的代码不划分内部的功能?



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

#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("%dt ", 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("%dt ", n);
if (n == 1)
{
return 0;
}
else
{
return sequence( n % 2 == 0 ? n / 2 :  n * 3 + 1 );
}
}

虽然函数的返回类型似乎没有意义。函数可以定义为

void sequence(int n)
{
printf("%dt ", n);
if ( n != 1 )
{    
sequence( n % 2 == 0 ? n / 2 :  n * 3 + 1 );
}
}

最新更新