假設第一個整數是x。然後,我們定義一個[0] = X,序列的下一個元素被計算爲:遞歸計算序列
a[n+1]=a[n]/2 if a[n] is even, and
a[n+1]=a[n]*3+1 if a[n] is odd.
The sequence continues till it reach value 1, then stop.
它看起來像這樣75,226,113,340,170,85,256,128,64,32 ,16,8,4,2,1
這是我的代碼(不使用遞歸)。 該prprmm它始終保持打印輸出= 1。我已經檢查過,但我不知道我錯在哪裏。 另一個問題是,其數據類型是最好的以聲明變量x和數組a [](以最小化到最低容量?我們如何才能做到這一點與遞歸?
int main(void)
{
float a[100];
int i=0;
float x;
printf("Enter the value of x: ");
scanf("%f",&x);
a[0]=x;
printf("\n%f\n",a[0]);
do{
if (fmod(a[i],2)==0){
a[i+1]=a[i]/2;}
else{
a[i+1]=a[i]*3+1;
}
i++;
} while (a[i]!=1);
printf("The ouput value is:\n");
for (int j=0;j<i;j++){
printf("%2.2f\t",a[i]);
}
getch();
return 0;
}
這是一個**可怕的想法,使用浮點數來解決與整數有關的問題。 – 2013-05-27 05:42:34