數學歸納法與程式設計

2021-08-20 00:01:58 字數 2398 閱讀 4804

什麼是數學歸納法?

數學歸納法用於證明在自然數上的一些斷言是否成立。

怎麼證明斷言對所有自然數成立?

第一步:證明n=1是成立的

第二步:證明n>1時,如果對於n-1成立,那麼對於n成立

(第二步不是直接證明,而是先假設n-1成立,再利用這個結論證明n是成立的)

例子:用數學歸納法證明 1+2+3+...+n = n(n+1)/2

第一步:

1 = 1*2/2

第二步:

①假設對於n-1的情況下成立

1+2+3+...+(n-1) = (n-1)n/2

②利用假設結論帶進去

1+2+3...+(n-1)+n = (n-1)n/2+n = n(n+1)/2

數學歸納法和寫程式之間的關聯?

比如方法:

int sum(int n) 就是計算加到n的和,我們當然可以把高斯公式帶入,但是試著把數學歸納法的語言翻譯為程式?

第一步:證明n=1是成立的:

if (n == 1) ;

第二步:

①假設對於n-1成立

sum(n-1) 返回加到n-1的和

②把假設的結論帶進去

return sum(n-1) + n;

(這個寫**的過程就是完成數學歸納法證明的過程。)

如何證明遞迴函式正確執行?

寫乙個遞迴函式的過程就是證明乙個遞迴函式正確性的過程,使用數學歸納法證明。

遞迴書寫方法

1.嚴格定義遞迴函式作用,包括引數,返回值,side-effect

2.先一般,後特殊

3.每次呼叫必須縮小問題規模

4.每次問題規模縮小程度必須是1

例子一:

1.鍊錶建立,根據輸入的陣列裡的元素建立鍊錶,返回鍊錶的頭

// 每次問題規模縮小程度必須是1,就是說先看2,3,4,5,再把1和這個結果接起來就行了

node firstnode = new node(values.get(0));

node headofsublist= createlinkedlist(values.sublist(1, values.size())); // sublist當2個引數一樣時返回empty的集合

firstnode.setnext(headofsublist);

return firstnode;

}class node

public static void printlinkedlist(node head)

system.out.println();}}

例子二:

鍊錶的反轉(只能改變引用,value值是final的,不能改變)

思路:先假設從2開始的鍊錶能夠反轉,再反轉從1開始的就行了

}例子三:

列出所有組合

數學歸納法

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

什麼是歸納法 數學歸納法

相鄰變數間存在通用關係 類似於 變數n 1,2,3,可以通過相鄰數加減1獲得。了解一下下圖示例 注 引用於 歸納法證明像是多公尺諾骨牌,將第一塊推到後,後續骨牌均被推到,完成證明。其中的每一張骨牌就是 變數為n的情況下,數學方程式的狀態 若被推倒,即此處變數適應於數學方程式,未被推倒,即數學方程式在...

數學思想 之 歸納法

數學歸納法 mathematical induction 是一種數學證明方法,常用於證明命題 命題是對某個現象的描述 在自然數範圍內成立。隨著現代數學的發展,自然數範圍內的證明實際上構成了許多其他領域 比如數學分析 的基礎,所以數學歸納法對於整個數學體系至關重要。數學歸納法本身非常簡單。如果我們想要...