[問題] 函式問題

看板C_and_CPP作者 (摳您雞挖)時間14年前 (2010/06/25 00:52), 編輯推噓7(7014)
留言21則, 5人參與, 最新討論串1/3 (看更多)
遇到的問題: (題意請描述清楚) 請教各位大大 (1/n)+=sum(n-1) 這行要怎麼改才不會出錯@@ 有問題的code: (請善用置底文標色功能) #include<iostream> #include<cstdlib> using namespace std; double sum(double n) { if(n==0) return 0; else return (1/n)+=sum(n-1); } int main() { double n; cout << "n= "; cin >> n; cout << "1/1+1/2+1/3...+1/n= " << sum(n) << endl; system("pause"); } 補充說明: 順便再問一個問題 函式是不是只能用遞迴的方式不能用for迴圈? 小弟是新手 大大們別鞭太大力XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.6.55

06/25 01:00, , 1F
+=的左邊要是l-value, 你的compiler應該有argu錯誤訊息
06/25 01:00, 1F

06/25 01:01, , 2F
給你吧.... 不然, 弄清楚 +, +=, = 它們之間的關係/差別
06/25 01:01, 2F

06/25 01:01, , 3F
再仔細的想一想, 你是不是真的有需要用到 +=, 雖然不是
06/25 01:01, 3F

06/25 01:02, , 4F
不能用. (提示, return n; return 1; return 1+n; 這些
06/25 01:02, 4F

06/25 01:03, , 5F
都是合語法的, 只差在return的值不同)
06/25 01:03, 5F

06/25 01:04, , 6F
另外, 函式當然可以寫迴圈, 沒有非寫遞迴這種事, 只是看
06/25 01:04, 6F

06/25 01:05, , 7F
你迴圈要怎麼寫來搭配函式使用....@_@"
06/25 01:05, 7F
感謝V大的建議 不過小弟實在資質愚鈍 還是想不出來遞迴的的寫法 可能腦袋的資料庫根 本就沒有正確答案XD 不過倒是用for寫出來了 double sum(double n) { double i,s=0; for(i=1;i<=n;i++) s+=(1/i); return s; }

06/25 01:35, , 8F
V大第二行推文有好多表情符號 (誤)
06/25 01:35, 8F

06/25 01:43, , 9F
l大....XDD // 這才是真的表情符號 (無誤XD)
06/25 01:43, 9F

06/25 07:35, , 10F
如果函式裡不能放迴圈那就不能寫DFS了耶 哭哭
06/25 07:35, 10F
※ 編輯: money601 來自: 140.127.6.55 (06/25 09:06)

06/25 09:01, , 11F
用兩層遞迴作還是可以
06/25 09:01, 11F

06/25 09:33, , 12F
單純是因為你沒有搞懂錯誤訊息, 搞懂基本運算元的用途或
06/25 09:33, 12F

06/25 09:34, , 13F
說基本語法罷了; 先不說你找不到得到, 我提示了你三個長
06/25 09:34, 13F

06/25 09:35, , 14F
得有點像的operator, 你有沒有試著替換過原來有問題的
06/25 09:35, 14F

06/25 09:36, , 15F
code呢:) 運算'元'->'子', operator通常翻運算子Orz
06/25 09:36, 15F

06/25 09:37, , 16F
就是 遇到的問題 裡你寫的那一小段, 把 += 換掉看看@_@"
06/25 09:37, 16F
後來我又看了一下 改成 double s=0; if(n==0) return 0; else s=(1/n)+sum(n-1); return s; 就ok了 感謝大大的指導 我再回去把運算子與運算式那章看熟一點orz...

06/25 09:53, , 17F
把+=改掉應該就好了吧@@,還有double作==的比較要小心點
06/25 09:53, 17F
※ 編輯: money601 來自: 140.127.6.55 (06/25 10:55)

06/25 10:58, , 18F
其實你可以直接寫 return (1/n) + sum(n-1); :)
06/25 10:58, 18F

06/25 10:58, , 19F
另外, 這邊解決了的話, 請注意一下樓上r大說的, 浮點數
06/25 10:58, 19F

06/25 10:59, , 20F
型態做 == 比較的話, 有時候會有出乎你意料之外的結果XD
06/25 10:59, 20F

06/25 11:00, , 21F
這點請參考置底十二誡的最後一誡, 與其相關的說明@_@"
06/25 11:00, 21F
文章代碼(AID): #1C8uqu0d (C_and_CPP)
文章代碼(AID): #1C8uqu0d (C_and_CPP)