遞推演算法二

2021-09-12 04:37:12 字數 1229 閱讀 6533

[b][align=center][size=medium]遞推演算法二(冪積數列)[/size][/align][/b][size=medium][b]冪積數列:[/b]m=,輸入整數n,m求小於n的按從小到大的第m個元素

分析:[list]

[*][b]窮盡法:[/b]從2開始到n,如果n%2==0,n=n/2一直迴圈的直到不能除盡、n%3(同理),最後的商等於1則說明這個數在數列中。

[*][b]演算法分析:[/b]可以很清楚的得出時間複雜度 = o(n)

[/list]

[/size]

private static void power(int n, int m)

while (j % 3 == 0)

if (j == 1)

}system.out.println("數列中小於" + n + "的共有" + index + "項");

system.out.println("數列中的第" + m + "項為:" + f[m]);

}

[size=medium]

[list]

[*][b]遞推法:[/b]

[*][b]尋求遞推關係:[/b]尋求x+y =i;和x+y = i-1之間的關係,不難看出第i行有i+1個元素,第行的前i個元素等於第i-1行對應列的2倍,而第i+1個元素等於3倍前一行的最後乙個元素。

x+y=0;1

x+y=1;2*1=2,3*1=3

x+y=2;2*2=4,3*2=6,3*3=9

x+y=3;4*2=8,6*2=12,9*2=18,9*3=27

[*]排序後輸出第m項。

[*]演算法分析:黨n從分大時項數index排序的時間複雜度=o(n^1/2),總的來說時間複雜度是< 0)

} else

}rowmax = rowmax * 3;

if (rowmax <= n && rowmax > 0)

//遞推結束推出while迴圈

if (flag == 0)

break;

i++;

}//氣泡排序

for (i = 1; i < k; i++) }}

system.out.println("數列中小於" + n + "的共有:" + k + "項");

system.out.println("數列中的第" + m + "項為:" + f[m]);

}

遞推演算法(初學)

遞推演算法 乙個問題的求解需一系列 類似重複 的計算,在已知條件和所求問題之間總存在著某種相互聯絡的關係。通過已知條件,利用特定關係得出中間推論,直至得到結果的演算法。在解決問題的時候,去尋找前後過程之間的數學關係 即遞推式 遞推演算法避開了求項公式的麻煩,把乙個複雜的問題的求解,分解成了連續的若干...

遞推演算法(2)

有 2n 的乙個長方形方格,用乙個12 的骨牌鋪滿方格 編寫乙個程式,試對給出的任意乙個n n 0 輸出鋪法總數。演算法分析 1 當n 1時,只能是一種鋪法,鋪法總數有示為x1 1。2 當n 2時 骨牌可以兩個並列豎排,也可以並列橫排,再無其他方法,如下左圖所示,因此,鋪法總數表示為x2 2 3 當...

第二章 遞推演算法

乙個問題的求解需一系列的計算,在已知條件和所求問題之間總存在著某種相互聯絡的關係,在計算時,如果可以找到前後過程之間的數量關係 即遞推式 那麼,從問題出發逐步推到已知條件,此種方法叫逆推。無論順推還是逆推,其關鍵是要找到遞推式。這種處理問題的方法能使複雜運算化為若干步重複的簡單運算,充分發揮出計算機...