問題描述
一隻兔子躲進了10個環形分佈的洞中的一個。狼在第一個洞中沒有找到兔子,就隔一個洞,到第3個洞去找;也沒有找到,就隔2個洞,到第6個洞去找;以後每次多一個洞去找兔子……這樣下去,如果一直找不到兔子,請問兔子可能在哪個洞中?
問題分析
首先定義一個數組a[11],其數組元素為a[1],a[2],a[3]……a[10],這10個數組元素分別表示10個洞,初值均置為1。
接著使用“窮舉法”來找兔子,通過循環結構進行窮舉,設最大尋找次數為1000次。由於洞只有10個,因此第n次查找對應第n%10個洞,如果在第n%10個洞中沒有找到兔子,則將數組元素a[n%10]置0。
當循環結束後,再檢查a數組各元素(各個洞)的值,若其值仍為1,則兔子可能藏身於該洞中。
下面是程序流程圖:
算法設計
理解了問題分析中的遞歸處理過程後,算法設計就非常簡單了。只需要將公式轉換成一個函數,然後用main()函數調用它就可以了。
下面是完整的代碼:
#include
int age(int n)
{
int x;
if(n == 1)
x=10;
else
x=age(n-1)+2;
return x;
}
int main()
{
int n;
printf("請輸入n值:");
scanf("%d", &n);
printf("第%d個人的年齡為%d ", n, age(n));
return 0;
}
運行結果:
可能在第2個洞
可能在第4個洞
可能在第7個洞
可能在第9個洞
閱讀更多 酷叮貓少兒編程 的文章