漢諾塔問題:有三根柱子a,b,c;a柱子上有n個盤子,把a柱子上的盤子全部移到c柱子上,一次只能移動乙個盤子,大的盤子不能放在小的盤子上面,求最少要移動多少次?
分析:需要注意的是,只有把a柱子上(n-1)盤子移到b上,才能把a柱子第n個盤子移到c上.
有1個盤子:直接移到c(1次); 共(1次)
有2個盤子:把第1個移到b(1次),把第二個移到c(1次),再把b上1個移到c(1次); 共3次
有3個盤子:把上面2個移到b(3次),把第3個移到c(1次),再把b上2個移到c(3次); 共7次
有4個盤子:把上面3個移到b(7次),把第3個移到c(1次),再把b上3個移到c(7次); 共15次
有5個盤子:把上面4個移到b(15次),把第3個移到c(1次),再把b上4個移到c(15次); 共31次
有6個盤子:把上面5個移到b(31次),把第3個移到c(1次),再把b上5個移到c(31次); 共63次
**如下:
#include
long long int func(n)
int main(void)
初步遞迴續
我們來分析ff 3 的實現過程 同樣首先執行ff 3 根據判斷條件執行呼叫ff n 1 也就是ff 2 然後ff 2 呼叫ff 1 ff 1 執行 列印1 執行完畢 這個時候問題出現了,接下來會做什麼呢?我們會想到執行ff 2 但是從哪執行呢 是再次重新執行嗎?這樣肯定不會的否則會陷入無限迴圈中 實...
遞迴討論(二)續
在討論二中,展示了鋼條分段的方法,只不過解題的方法採用的是自頂而下的策略。個人理解的自頂而下的策略 首先我們不知道乙個大問題的答案,但我們可以將問題規模縮小,外加上已知的一部分。進而變成求解這個小規模問題答案的過程,利用遞迴原理,層層向下,最終回到乙個最簡單的問題。這種處理問題的方式,難免會有重複求...
操作函式(續)
一 練習 1 db與dbms的區別 db 按照一定的資料結構儲存資料的倉庫 dbms 使用sql語言管理db的資料庫管理系統 2 修改表中的某一欄位名 alter table tname rename column oldname to newname 3 向表中新增乙個新的字段的格式 alter ...