基於遞迴的技術 歸納法

2021-10-09 01:24:57 字數 2429 閱讀 6116

//selectionsortrec

// input : a[1...n]

// output : 非降序 a[1...n]

1.sort(1

)過程 sort

// output : 非降序 a[1...n]

1.sort

(n)過程 sort

(i)if

(i >

1) then

x =a[i]

;sort

(i-1);

j = j -1;

while

(j >0&&

a[j]

> x)

a[j+1]

=a[j];

j--; end while;a

[j+1

]= x;

//exprec

//input: 實數 x 和非負整數 n

1.power

(x,n)

過程 power

(x,m)

if(m =

0) then y =

1else y =

power

(x,|_m/

2_|)

; y = y^2;

if(m 為奇數) then y = xy;

end if

return y;

// exp

y =1

;將 n 用 dk dk-

1... d0 表示

for j = k to 0

y = y^2;

if(dj =

1) then y = xy;

end for

return y;

觀察結論: 在原序列中去除兩個不同的元素後,那麼在原序列中的多數元素在新序列中還是多數元素。 (但是,a[1+2i … n] 中的多數元素未必是 a[1…n] 的多數元素,需要驗證。)

// majority

c =candidate(1

);count =0;

for j =

1 to n

if(a

[j]= c) count ++;if

(count >

|_n/

2_|)

return c;

else

return none;

過程 candidate

(m)j = m , c =

a[m]

, count =1;

while

(j < n && count >0)

j = j +1;

if(a[j]

= c) count ++

;else count --

;end while

if(j = n)

return c;

else

return

candidate

(j +1)

;

陣列a[1…n]中存放了n個公升序排列的整數,給定整數x,設計乙個o(nlogn)的演算法,判斷陣列a中是否存在兩個元素的和等於x,如果存在則返回這兩個元素的下標;如果不存在返回「not exist」。並證明你所設計的演算法時間複雜度為o(nlogn).

// tian'

1.tian(1

)過程 tian

(m)if

(m < n) then

i = m;

k =binarysearch(x

-a[m], m+

1, n);if

(k !=0)

return

(i, k)

;else

return

tian

(m+1);

else

return

"not exist"

;

複雜度寫乙個遞推式子即可。

順推歸納法 順推歸納法

順推歸納法 forwards induction 編輯 什麼是順推歸納法 順推歸納法是指根據博弈方前面階段的行為,包括偏離特定均衡路徑的行為,推斷他們的思路並為後面階段博弈提供依據的分析方法。考慮的是博弈方有意識偏離子博弈精煉納什均衡和顫抖手均衡路徑的可能性,而不是偶然錯誤。編輯 順推歸納法的分析 ...

歸納法除錯

歸納是一種特殊的思考過程,可以從細節到全域性,也就是 從線索 即錯誤的症狀,可能是乙個或者多個測試用例的結果 出發,尋找線索之間的聯絡。歸納除錯的步驟 確定相關資料。除錯人員在具體的除錯工作中常常會犯乙個錯誤 未能將所有有用的資料或者症狀都考慮進去。在確定相關的資料時,我們需要列舉出所有知道程式執行...

數學歸納法

歸納 是一種從經驗事實中找出普遍特徵的認知方法。根據這個觀察,我們是不是可以大膽假設,前 n 個格仔的麥粒總數就是 2 1 呢?如果這個假設成立,那麼填滿 64 格需要的麥粒總數,就是 1 2 2 2 2 2 2 1 18446744073709551615。數學歸納法的一般步驟是這樣的 證明基本情...