當前位置:成語大全網 - 書法字典 - c語言編程水手椰子問題,我寫了壹個程序,答案是錯的。

c語言編程水手椰子問題,我寫了壹個程序,答案是錯的。

這個問題我也思考了很久。看了網上很多方法,我直接給出公式來計算。我自己找到了這個問題的規律,用叠代和反向遞歸的方法解決了這個問題。具體代碼如下:(程序有註釋,建議大家畫個圖,看看水手人數不同的情況是什麽樣的,這樣就能看懂了)

#包含?& ltstdio.h & gt

# include & ltstdlib.h & gt

# include & ltmath.h & gt

主()

{

int?n?;?//水手人數

printf("輸入?n(1 & lt;n & lt= 5):\ n”);

scanf("%d ",& ampn);

//增加程序的健壯性

如果(n & gt1。& ampn & lt=5)

printf("y=%d\n ",Coconu?(n));

其他

printf("錯誤!\ n ");

系統(“暫停”);

}

int?可可努?(int?n)

{

int?我?;?//內部循環變量

int?j = 1;?//外部循環變量,

int?s;?//椰子的原始數量

int?r;?//叠代變量

做什麽?//第壹個周期:在最後壹個水手的平均份額之後,增加每份的椰子數,從1開始(最小值為1)。

{

r=j*n+1?;?//最後壹個水手的椰子總數

//?第二個循環:通過叠代和反向遞歸得到原始椰子數。

for(I = n-1;我& gt0;我-)

{

//?在叠代過程中,如果反向遞歸不可分,就會跳出循環。(因為椰子必須是完整的)

if(r%(n-1)!=0)

打破;

//?重復

s =(r/(n-1))* n+1;

r = s;

}

j++;

}而(我!=0);?//i=0表示循環完成,完整的循環S就是最終的原椰子數。

回歸?s;

}