[綜合]無題 無名 ID:tRTkC1DU 2022/01/14(五) 22:31:06.332 No.25766057
評分:0, 年:0, 月:0, 週:0, 日:0, [+1 / -1] 最後更新:2022-01-15 09:15:10
超過5分鐘了...
這個運算那麼耗資源嗎
無題 無名 ID:mtG.Toqs 2022/01/14(五) 22:37:47.547 No.25766151 這樣是不是等於要計算2^99個thread
無題 無名 ID:ex4b8aV2 2022/01/14(五) 22:39:26.022 No.25766174 複雜度注意一下好嗎==
無題 無名 ID:HBhdJExU 2022/01/14(五) 22:39:37.473 No.25766175 白癡喔
用動態規劃算好嗎
無題 無名 ID:uN2srSg2 2022/01/14(五) 22:40:14.571 No.25766180 是 因為你的寫法會重複計算同樣的問題
所以麻煩請用DP來解
無題 無名 ID:tRTkC1DU 2022/01/14(五) 22:40:24.201 No.25766183 無題 無名 ID:wipk2stw 2022/01/14(五) 22:41:02.490 No.25766195
用空間換時間好ㄇ==
無題 無名 ID:tL6lUDD2 2022/01/14(五) 22:42:36.474 No.25766220
https://zh.wikipedia.org/wiki/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0
下面有程式範例 自己參考一下邏輯
無題 無名 ID:alBnMugA 2022/01/14(五) 22:42:45.456 No.25766224
[aa]
final double f = Math.sqrt(5);
return (int) ((1/f) * ( Math.pow((1+f)/2, n) - Math.pow((1-f)/2, n) ) );
[/aa]
無題 無名 ID:tRTkC1DU 2022/01/14(五) 22:42:48.698 No.25766225 無題 無名 ID:uN2srSg2 2022/01/14(五) 22:45:13.355 No.25766251 >>25766225>你說的那個我不會...
簡單來說 把問題切成一堆子問題來解
然後把子問題儲存起來
下次就能直接抓來用不必重複計算
無題 無名 ID:HBhdJExU 2022/01/14(五) 22:46:15.133 No.25766262
無題 無名 ID:uN2srSg2 2022/01/14(五) 22:46:55.073 No.25766269 無題 無名 ID:jl1Q5mXM 2022/01/14(五) 22:47:23.408 No.25766276
誰叫你要用這垃圾語言
無題 無名 ID:mtG.Toqs 2022/01/14(五) 22:49:41.479 No.25766305
>>25766225http://web.ntnu.edu.tw/~algo/DynamicProgramming.html
Google就有答案了啊
或除了遞迴也可以用迭代的方式
這兩種方法一直都是互補
無題 無名 ID:r0YFRmIo 2022/01/14(五) 22:50:07.896 No.25766315 無題 無名 ID:uN2srSg2 2022/01/14(五) 22:50:54.764 No.25766321
無題 無名 ID:HBhdJExU 2022/01/14(五) 22:52:11.367 No.25766336
無題 無名 ID:mfWq8v1Q 2022/01/14(五) 22:52:12.309 No.25766337 資工肥宅又要群聚了
為何肥宅都愛讀資工?
無題 無名 ID:p7kef8q2 2022/01/14(五) 22:53:36.061 No.25766352 無題 無名 ID:HBhdJExU 2022/01/14(五) 22:55:09.684 No.25766371 無題 無名 ID:tRTkC1DU 2022/01/14(五) 22:55:28.176 No.25766377 >>25766251喔喔、能理解
我是看某本書的範例
可能剛好在講遞迴才會給這種例子
無聊試一下而已
其實我比較無法理解的是如圖的這種
書本是說流程不用一個一個去追蹤
有確定運算正確而且不會有BUG就好
但整個流程我沒辦法理解它到底怎麼走的
無題 無名 ID:WtdGkN2A 2022/01/14(五) 22:56:41.624 No.25766388 print出來
無題 無名 ID:tRTkC1DU 2022/01/14(五) 22:56:43.329 No.25766389 無題 無名 ID:tRTkC1DU 2022/01/14(五) 22:57:15.616 No.25766394
無題 無名 ID:uN2srSg2 2022/01/14(五) 22:58:11.785 No.25766405
無題 無名 ID:tRTkC1DU 2022/01/14(五) 23:02:55.884 No.25766458 無題 無名 ID:uN2srSg2 2022/01/14(五) 23:03:50.931 No.25766469 無題 無名 ID:mtG.Toqs 2022/01/14(五) 23:08:56.985 No.25766536
>>25766377你每呼叫一次函數
在回傳之前函數本身都會占用一點記憶體空間
遞迴的話在回傳之前會一直呼叫自己
等你分解到fibonacci(1)和fibonacci(0)之前
搞不好就會出現stackoverflow
無題 無名 ID:/LKpnkYc 2022/01/14(五) 23:10:07.529 No.25766552
費氏數列可以用迴圈解
無題 無名 ID:i2c9oTKY 2022/01/14(五) 23:11:34.221 No.25766576
不會DP就被罵低能兒
太苦了
無題 無名 ID:tRTkC1DU 2022/01/14(五) 23:12:25.896 No.25766590 >>25766469recurse = factoril(n-1)那邊
我的理解一直是 我丟3他就一直3 2 1 0
可是return 1不就跳出來了嗎
而且再 n* recurse 的123是哪裡來的
雖說書有畫圖勉強知道他意思
但一直沒辦法接受
無題 無名 ID:uI4yu6N6 2022/01/14(五) 23:13:47.428 No.25766609 最近剛好在練狗死爛扣
無題 無名 ID:tL6lUDD2 2022/01/14(五) 23:16:10.526 No.25766638 以這題為例
費波那契數列的數值為前兩個數字相加
因此邏輯上簡單的作法就是多x1跟x2兩個暫存區
把前兩次的計算結果儲存起來
再用一個變數i儲存目前算到第幾階了
接著往後算的時候只要
if n>i
x=x1+x2
x1=x2
x2=x
i=i+1
else
print x
這樣只要多用3個變數就好了
無題 無名 ID:tRTkC1DU 2022/01/14(五) 23:17:11.340 No.25766652
無題 無名 ID:mtG.Toqs 2022/01/14(五) 23:17:33.108 No.25766656 無題 無名 ID:tRTkC1DU 2022/01/14(五) 23:18:57.871 No.25766669 無題 無名 ID:CVsPR2oA 2022/01/14(五) 23:19:39.468 No.25766672 >>25766458你n每大1 是不是就要分支重算一次?
所以每圈都乘2
那是不是就2*2*2...=2^n次?
你設個數列
第一次存f[0]
第二次存f[1]
...
到n=99也只要抓f[97]+f[96]
只要做n次加法
無題 無名 ID:FQWMZPKY 2022/01/14(五) 23:19:42.468 No.25766674
是不會拿個global變數把結果暫存起來喔= =
無題 無名 ID:mtG.Toqs 2022/01/14(五) 23:21:52.851 No.25766699 無題 無名 ID:uN2srSg2 2022/01/14(五) 23:22:21.803 No.25766713 >>25766590>可是return 1不就跳出來了嗎
跳回去到呼叫他的函式
然後繼續執行下一行程式碼
你不用一直想他會一直遞迴到哪
把他當成呼叫factorial(n-1)後會丟回一個值給你就好
至於factorial(n-1)會執行什麼先不用管
無題 無名 ID:m1SBLVC6 2022/01/14(五) 23:24:23.710 No.25766744 無題 無名 ID:tRTkC1DU 2022/01/14(五) 23:27:34.706 No.25766783 >>25766656還是我對return理解錯誤?
它不會跳出整個程式嗎
還是說它不但沒有整個中斷
還會把之前遞迴的暫存起來
然後用原先遞迴時的條件一個一個又算回去?
我對recurse到result 之間的過程感到很飛躍
無題 無名 ID:i2c9oTKY 2022/01/14(五) 23:29:14.972 No.25766804
>>25766744我糞校生啦
感覺資策會就是養一群寫免洗程式的人
反正大部分爛公司也不管日後好不好維護
無題 無名 ID:uN2srSg2 2022/01/14(五) 23:29:19.747 No.25766805 >>25766744>他們說企業很愛用資策會出身的人耶
唬爛你而已啦
不然資工系幹嘛讀四年 半年就可以給畢業證書了啊www
資策會就只是超級填鴨補習班而已
撐過去至少懂怎麼寫垃圾出來 但造化還是看個人
無題 無名 ID:uN2srSg2 2022/01/14(五) 23:32:13.416 No.25766836 無題 無名 ID:WtdGkN2A 2022/01/14(五) 23:33:05.350 No.25766848
無題 無名 ID:mtG.Toqs 2022/01/14(五) 23:36:47.629 No.25766898 無題 無名 ID:tRTkC1DU 2022/01/14(五) 23:36:52.024 No.25766899 >>25766672所以這個複雜度......
呃 之前碰過一些又忘了
好像算是很複雜?
>>25766699迭代和遞迴?
其實我分不太清楚w
我會分while for if 在什麼時候用
但那兩個定義的差別一直沒弄清楚
>>25766713沒有完全懂
但大致上了解了我對return沒有理解得很清楚
有個方向了 謝謝
無題 無名 ID:r0YFRmIo 2022/01/14(五) 23:39:49.506 No.25766941 無題 無名 ID:tRTkC1DU 2022/01/14(五) 23:40:30.294 No.25766952
無題 無名 ID:Q62Vdvyk 2022/01/14(五) 23:44:01.747 No.25766990
無題 無名 ID:tRTkC1DU 2022/01/14(五) 23:44:57.901 No.25767000
無題 無名 ID:lFPqg602 2022/01/14(五) 23:45:52.136 No.25767010 >>25766899你想搞懂真正搞懂function call到底幹了什麼
你多少還是得學計算機組織跟組語
有興趣就自己看一下這個部分
你就會懂上面講stack是什麼意思了
無題 無名 ID:tRTkC1DU 2022/01/14(五) 23:53:48.915 No.25767071 >>25767010書上有說是堆疊示意圖
我只以為是跟資料結構的概念有關
>你多少還是得學計算機組織跟組語
所以有關聯到這些嗎
計算機組織算是比較深入的計算機概論嗎
無題 無名 ID:bB57fwB. 2022/01/14(五) 23:54:38.918 No.25767081 >>25766805也沒唬濫,只是體制化而已
資策會也有職前訓練的課程
有些企業懶得自己開課,就
會直接去那邊挖人。至少比
起一些糞校混畢業卻什麼都
不會,連社會常識都沒有的
新鮮人好用多了,至少不用
再花錢教,教完還不見得待
得住。但..也就如此而已
並不代表出來的人就有什麼
過人之處,頂多就是基本的
上下班會準時(因為上課時
會要求)+至少能寫出點東西
無題 無名 ID:eCiFGkak 2022/01/14(五) 23:58:17.108 No.25767123 把每一個步驟都印出來你就知道他是怎麼執行的了
記得n要從最小的開始一個個試,不要一次就10,直接10印出來的東西你肯定看到瘋掉
你自己看過印出什麼東西後就知道為什麼99會算不出來了
很久沒碰python了,以下程式碼僅供參考、不確定能不能編得過
[aa]
def fibonacci(n):
print "start "+n
if n==0:
print "n=0"
return 0
elif n==1:
print "n=1"
return 1
else
print "cal a "+n
a=fibonacci(n-1)
print "cal b "+n
b=fibonacci(n-2)
print "cal return "+n
return a+b
[/aa]
這個跟計概沒什麼關係,就是純粹的邏輯
不需要學計概也能搞得懂
無題 無名 ID:lFPqg602 2022/01/14(五) 23:58:56.964 No.25767132 >>25767071其實完整的運作是在計算機組織教的
其中就是教你怎麼把C轉成組語
也不用真的去學怎麼轉,那個難搞到靠北,遞迴部分會寫到自殺
有個概念就可以了
而跟資料結構相關的是演算法,可以說資料結構是演算法的入門
另外,每一門資工系的每一門課都是比較深入的計概 ==
無題 無名 ID:mspjYdWY 2022/01/15(六) 00:01:14.007 No.25767157 無題 無名 ID:P8PPSOM. 2022/01/15(六) 00:01:46.484 No.25767162
無題 無名 ID:9.0yNvyY 2022/01/15(六) 00:02:43.784 No.25767166 無題 無名 ID:vLICsv7I 2022/01/15(六) 00:03:08.448 No.25767173
無題 無名 ID:9.0yNvyY 2022/01/15(六) 00:04:29.513 No.25767182
>>25767157我寫C++的
只有十年前學校教過python,之後就沒用過了
當然不知道現在長成怎樣了
連當年的版本都不一定對,僅供邏輯參考而已
無題 無名 ID:vLICsv7I 2022/01/15(六) 00:05:47.437 No.25767190
>>25767166因為你的老師沒有叫你當人體編譯器來執行它吧
不過當純轉成組語確實是沒差啦
講得確實有誤
無題 無名 ID:RE.swn.Q 2022/01/15(六) 00:07:05.476 No.25767197
你要把資料存下來
直接取用才會快
無題 無名 ID:3UwEU52g 2022/01/15(六) 00:09:18.626 No.25767220 無題 無名 ID:RE.swn.Q 2022/01/15(六) 00:10:58.785 No.25767233 無題 無名 ID:FEwYGzUY 2022/01/15(六) 00:15:48.669 No.25767272 >>25767132>每一門課都是比較深入的計概
喔喔w
>那個難搞到靠北
可以想像
以前讀電機的時候
跟電腦比較有關的好像是數位邏輯吧
還要做一點可以動的東西出來
光燒那個什麼東西就煩到靠杯
(其實也忘了當時的情況啦 太久了
>可以說資料結構是演算法的入門
之前碰的時候有問了一下
有島民說用Python 去做資料結構本身其實蠻怪異的
所以也就中斷了(只學到矩陣
>>25767166應該是因為太底層?
無題 無名 ID:mspjYdWY 2022/01/15(六) 00:16:21.489 No.25767279 >>25767220算吧,函數裡面呼叫自己就是遞迴寫法
迭代的話一般是寫成迴圈的形式
印象中Fortran就不給用遞迴
但硬要寫成兩個一樣的函數互相呼叫也是可以
無題 無名 ID:FEwYGzUY 2022/01/15(六) 00:19:34.658 No.25767321 無題 無名 ID:FEwYGzUY 2022/01/15(六) 00:22:06.860 No.25767349
>>25767279>函數裡面呼叫自己就是遞迴寫法
>迭代的話一般是寫成迴圈的形式
原來如此
本來一直沒有很確定兩個詞差別在哪
因為看起來都像在LOOP
無題 無名 ID:9.0yNvyY 2022/01/15(六) 00:27:34.292 No.25767404 >>應該是因為太底層?
遞迴難搞的是在人腦裡想像他怎麼運作
對電腦來說跟一般的function call沒有兩樣
所以寫成組語的時候也沒有什麼特別難搞的,跟底層無關
>>有島民說用Python 去做資料結構本身其實蠻怪異的
如果你對於學這些底層的東西有興趣,去學C吧
目前為止在python學到的東西幾乎都可以帶過去,趁著還能無痛學習的時候趕快學
python不是讓你拿來研究電腦怎麼運作、CPU結構長怎樣用的語言
python的設計理念是你有什麼問題都丟估狗,估狗告訴你你怎麼在python裡把別人寫好的程式叫出來用
你如果喜歡自己寫底層、自己控制每個邏輯,你該學C
>>25767321不需要
我不知道樓上那位為什麼會覺得要
其實整個else根本就不需要
把else砍掉、裡面三行都退一個tab也可以
return具有在當下強制結束函式的功能,if return後面接else都是多餘的
可是在搞懂這個題目之前你還是先乖乖照著書上的寫法吧
無題 無名 ID:vLICsv7I 2022/01/15(六) 00:35:31.713 No.25767464 >>25767272用python做也不會到奇怪啦
基本概念是一樣的,用什麼語言其實都可以
資結後面比較複雜的結構只有各種tree,其他都很簡單
其實重點就是要搞懂stack、array、linkedlist、hash ... 的差別,這很重要
tree的應用比較少,但用到的時候會發現真的滿好用的
另外矩陣又是另一堂課的事(線性代數),太偏數學,資結其實不太會講
無題 無名 ID:9.0yNvyY 2022/01/15(六) 00:39:19.103 No.25767500 >>25767464矩陣本來就是數學家的玩具,不是給搞電腦的人玩的
寫程式也就只有拿數學家寫好的公式來算的時候會用到
無題 無名 ID:FEwYGzUY 2022/01/15(六) 00:44:54.338 No.25767541
>>25767404>趁著還能無痛學習的時候趕快學
你講得好像有點嚴重
>目前為止在python學到的東西幾乎都可以帶過去
不過這句話倒是蠻吸引我的
只不過如果突然還要跳 就至少還要再去挑書@@
同時學可行嗎 唉
我只是好奇心有點太過頭了
>return具有在當下強制結束函式的功能,if return後面接else都是多餘的
這邊其實可以理解了
無題 無名 ID:vLICsv7I 2022/01/15(六) 00:45:59.013 No.25767555 >>25767500>矩陣本來就是數學家的玩具,不是給搞電腦的人玩的
圖學 : am i a joke to you?
不過,現在人好像都不太搞圖學了
無題 無名 ID:FEwYGzUY 2022/01/15(六) 00:52:15.408 No.25767603 >>25767464因為學到單向linkedlist的時候
突然要用到物件方法 書又沒講的很清楚
我也還沒學到那邊
只到for while 串列 字典 元組...大約上半部?
搞得打算乾脆重看重學完Python那本的全部
再去考慮是要繼續碰資料結構還是再學C
無題 無名 ID:9.0yNvyY 2022/01/15(六) 01:00:51.681 No.25767667 >>25767603linkedlist要用到指標,這是C/C++才有的東西
在高階語言(python)上只能用具有類似效果但本來不是設計來給你用的東西來達成
你要在python上寫出真正的linkedlist需要先多學很多東西
但在C,你會看到linkedlist的時候通常已經具備所有該有的工具了
一般的、實用取向的程式一輩子不會需要自己寫linkedlist
你要嘛走錯路學錯東西
要嘛就是為了想搞懂而搞懂的求知者
前者你該丟掉linkedlist去學一些實用的東西
後者你該學C,這才是求知者的通用語言
無題 無名 ID:RHdf9Wxg 2022/01/15(六) 01:08:21.223 No.25767704
>>25767667好了啦C信者
只是要學資料結構概念的話 用python也能寫出自製的linkedList
差別只在python語法沒有明確區分reference/value/pointer罷了
你如果覺得這樣只是學一半
那你有把作業系統計算機結構數位電路都學起來嗎
無題 無名 ID:mspjYdWY 2022/01/15(六) 01:12:38.630 No.25767730
無題 無名 ID:FEwYGzUY 2022/01/15(六) 01:21:33.559 No.25767784
>>25767667上次借串問的時候應該就是碰到你
我是學爽的 跟求職換跑道沒什麼關係
或者說並不是出於那一類動機
而且看到東西會有看個徹底的傾向
所以應該算是後者
只是貪圖 以前有碰過 和 語法簡單較接近直覺 的方便
所以還在繼續學Python
既然都碰到兩次w
趁過年規劃一下C的事情好了
謝囉
無題 無名 ID:mXwJPffI 2022/01/15(六) 01:55:42.927 No.25767921
在台灣不是四大寫三小C
糞校乖乖滾去當碼農寫php