我想使用遞回函式創建一個冰雹序列。但是偶數沒有被除,我想知道我在哪里做錯了什么?
#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);
}
}
uj5u.com熱心網友回復:
該函式在此 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 );
}
}
盡管函式的回傳型別似乎沒有意義。所以函式可以定義為
void sequence(int n)
{
printf("%d\t ", n);
if ( n != 1 )
{
sequence( n % 2 == 0 ? n / 2 : n * 3 1 );
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/480914.html
下一篇:Angular函式的回傳值
