为什么我的代码没有在函数内部划分?
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 );
}
}
我想使用递归函数创建冰雹序列。但是偶数没有被分割,我想知道我哪里做错了什么?
#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 );
}
}