C 語言基礎實現青蛙跳台階和漢諾塔問題

2022-09-24 13:06:10 字數 1413 閱讀 7476

目錄

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法

遇見題目我們可以在紙上先動手畫畫,把最簡單的幾種方式列出來,作比較,找規律。

按照上面**可以從跳法次數,過程,或者兩者結合找規律

1. 從跳法次數分析

**1(遞迴)

#include www.cppcns.com;

int jump(int n)

int main()

2. 從過程分析

**2(非遞迴)

#include

int fac(int m)

return count;

}int jump(int n)

return sum;

}int main()

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階…也可以跳n級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法

**3(遞迴)

#include

int jump(int n)

int main()

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階…也可以跳m級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法(m<=n)

**4(遞迴)

#include

int jump(int n,int m)

}int main()

有a,b,c三個柱子,a柱子上從上到下,從小到大排列著n個圓盤。現要求將a柱子上的n個圓盤全部移動到c柱子上,依然按照從上到下,從小到大的順序排列。且對移動過程要求如下:

a)一次只能移動乙個盤子。

b)移動過程中**子不允許出現在小盤子上方。

問:總共需要移動的步數是多少?

因為求的是步數,我們可以通過找前面幾組資料,觀察是否有什麼規律

**5(非遞迴)

#include

#include

int main()

**6(遞迴)

#include

int towww.cppcns.comwer(int n)

int main()

有a,b,c三個柱子,a柱子上從上到下,從小到大排列著n個圓盤。現要求將a柱子上的n個圓盤全部移動到c柱子上,依然按照從上到下,從小到大的順序排列。且對移動過程要求如下:

a)一次只能移動乙個盤子。

b)移動過程中**子不允許出現在小盤子上方。

問:列印移動的方案 (例如, 移動a柱最上面的圓盤到c柱, 則輸出"a -> c")

因為求的是移動方案,所以我們可以將前幾組資料列出來,結合遞迴化簡為繁的思想找共性和非共性

**7(遞迴)

#include

void hanio(int n, char x, char y, char z)

}int main()

結語:

青蛙跳台階問題(C語言)

題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級 它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。題目分析 分析思路 青蛙對每級台階可選擇過或者不過 換個角度來看,題目的問題等價於,青蛙現在在起點n 0處。目標是n n處。那麼經過序號1,2,3 n 1層台階。對於每一層台階,都可...

Java實現青蛙跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級 它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。我的想法 我記得這是乙個斐波那契數列的問題?但是做出來不對。public class solution int next 1 int nn 0 if target 1 1 next jumpf...

斐波拉契數列 漢諾塔,青蛙跳台階

斐波拉契數列 漢諾塔,青蛙跳台階 的演算法實現 一.斐波那契數列 1,1,2,3,5,8,13,21,34 f n 0,1,f n 1 f n 2 n 0n 1 n 2遞迴解法 效率很低 public function fibonacci1 n if n 1 return fibonacci1 n ...