[問題] 遞迴問題

看板C_and_CPP作者 (a26573633)時間11年前 (2012/10/04 11:29), 編輯推噓4(4018)
留言22則, 8人參與, 最新討論串3/6 (看更多)
基本C程式語言沒學好,去學資料結構有點崩潰, 看到我下面的敘述大概就會了解....我目前有點鳥 還請各位給小弟一些指點 目前在教遞迴,老師要我們使用遞迴的程式 計算像是+1+*23*45的式子 這個式子就是1+(2*3+4*5)的意思 就是只要抓到運算子就往後面抓兩個運算元做運算傳回 又遇到運算子就在往後抓兩的運算元做運算傳回 遞迴下去 老師提示加上自己想的程式碼大概是 int F( ) /使用遞迴的主要函數/ { if(x=數字){ return 數字 } else{ if (x="+") if(x="-") if (x="*") } } int main () { printf ("%d\n,F()); . . . 真的不知道該怎麼做,已經卡很久了,還請各位幫忙了,謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.136.37 ※ 編輯: a26573633 來自: 140.114.136.37 (10/04 11:31)

10/04 11:41, , 1F
不知道大家看不看的懂......
10/04 11:41, 1F

10/04 11:54, , 2F
我沒看到你的虛擬碼裡面有自己call自己的地方?
10/04 11:54, 2F

10/04 11:54, , 3F
先問你 "遞迴"的定義是甚麼?
10/04 11:54, 3F

10/04 11:57, , 4F
如果抓到+-*就要call自己吧?!
10/04 11:57, 4F

10/04 11:59, , 5F
遞迴不是一個函數會CALL自己,然後一層一層跑下去,在一層
10/04 11:59, 5F

10/04 11:59, , 6F
一層算回來?
10/04 11:59, 6F

10/04 12:06, , 7F
你可以先思考一下F的功能是什麼
10/04 12:06, 7F

10/04 12:06, , 8F
比如說 F 是要 算出 *23 的結果, input 跟 return 為何?
10/04 12:06, 8F

10/04 12:07, , 9F
然後再想 F 對 +1+*23*45 使用的話會是如何
10/04 12:07, 9F

10/04 13:22, , 10F
先寫個簡單練習 F(x)=F(x-1)+2, F(0)=5, x>0
10/04 13:22, 10F
int F(int x) if (x==0) return 5 ; EX: x=3 return F(x-1) + 2 ; F(3)=F(2)+2 F(2)=F(1)+2 F(1)=F(0)+2 F(0)=5 這樣對嗎?? ※ 編輯: a26573633 來自: 140.114.136.37 (10/04 13:39)

10/04 13:45, , 11F
既然會的話就會寫了吧 差不多的東西
10/04 13:45, 11F
想了很久,還在想= =,像是上面這一題,x代一個數字就 直接進F(x)去跑,遞迴F(x-1),,,繼續跑,但如果是像 +1+*23*45這種,要如何進入F()函數,一樣F(int x)? 是不是我C哪裡漏學了.....還是腦袋瓜卡住了

10/04 13:45, , 12F
多想想就好,另外你可以搭配全域變數使用
10/04 13:45, 12F

10/04 13:51, , 13F
這題是不是從字串後面跑到前面比較容易啊 ??
10/04 13:51, 13F

10/04 13:52, , 14F
從後面跑到前面才明顯有兩個運算元啊(順序也沒問題..)
10/04 13:52, 14F

10/04 14:12, , 15F
溫馨提示:抓後面兩個運算元的地方需要遞迴 :)
10/04 14:12, 15F
QQ

10/04 14:33, , 16F
輸入是字串 當然是用字串處理阿
10/04 14:33, 16F

10/04 14:40, , 17F
F(char * string);
10/04 14:40, 17F
真是謝謝了 我去試試看 所以要使用字元陣列和指標?! ※ 編輯: a26573633 來自: 140.114.136.37 (10/04 15:15)

10/04 16:22, , 18F
to EdisonX: 從前面跑到後面等函式呼叫結束並回傳讀取
10/04 16:22, 18F

10/04 16:22, , 19F
頭比較簡單
10/04 16:22, 19F

10/04 16:30, , 20F
感謝 loveme~,這題我也在 try 怎麼做說 @@
10/04 16:30, 20F
哈哈 不會是同學吧@@

10/04 19:53, , 21F
我也希望我是你同學,大概沒機會再旁聽課程了吧 @@
10/04 19:53, 21F

10/04 21:55, , 22F
10/04 21:55, 22F
謝謝版主~~ 感覺好難阿= = [1;37m推 EdisonX:推版主的 :) 10/05 00:46 ※ 編輯: a26573633 來自: 111.251.218.237 (10/05 15:50)
文章代碼(AID): #1GRGAg5f (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1GRGAg5f (C_and_CPP)