聽過課的來做下筆記。有幾種思維,一種是像物理這種實證思維,一種是以數學為代表的數學思維,另外一種可能就是題主關注的以算為代表的計算思維了。
我能直接想到的方法是一個一個地加。1+2+3+...+100=?
那麼用python寫就是這樣的:
比如說你要一個result的變數來存最後的運算結果,那必定是這樣:
result=1+2+3+4+5+6+7+8+...(我寫不下去了)+100
那一定不是一種明智的方法,因為計算機可以迴圈執行程式碼段:
result=0
for i in range(1, 101):
result = result + i
print result
這個迴圈的意思就是每次從1-100的範圍中取出每個數,存入i中
然後每次把取出的i加到result裡面。這樣一輪過後,result就被加了從0~100。這樣就可以了。
還有一種方法是運用了數學思維,就是等差數列的求和公式:首相加尾項的和乘以項數再除以2。
因此可以寫成
result = (1+100)*100/2
print(result)
這種就是數學思維。實際上計算機很擅長重複做一件事情。第二種寫法不能說不好,只是說他沒有發揮計算機的優勢。
所以遇到一個要用計算機解決的問題,思路就是想想如果你是計算機,你應該怎麼做。這樣就能找到一個最容易理解的演算法,然後去實現它。你就成功了。
聽過課的來做下筆記。有幾種思維,一種是像物理這種實證思維,一種是以數學為代表的數學思維,另外一種可能就是題主關注的以算為代表的計算思維了。
我能直接想到的方法是一個一個地加。1+2+3+...+100=?
那麼用python寫就是這樣的:
比如說你要一個result的變數來存最後的運算結果,那必定是這樣:
result=1+2+3+4+5+6+7+8+...(我寫不下去了)+100
那一定不是一種明智的方法,因為計算機可以迴圈執行程式碼段:
result=0
for i in range(1, 101):
result = result + i
print result
這個迴圈的意思就是每次從1-100的範圍中取出每個數,存入i中
然後每次把取出的i加到result裡面。這樣一輪過後,result就被加了從0~100。這樣就可以了。
還有一種方法是運用了數學思維,就是等差數列的求和公式:首相加尾項的和乘以項數再除以2。
因此可以寫成
result = (1+100)*100/2
print(result)
這種就是數學思維。實際上計算機很擅長重複做一件事情。第二種寫法不能說不好,只是說他沒有發揮計算機的優勢。
所以遇到一個要用計算機解決的問題,思路就是想想如果你是計算機,你應該怎麼做。這樣就能找到一個最容易理解的演算法,然後去實現它。你就成功了。