精華區beta TransCSI 關於我們 聯絡資訊
※ 引述《flashstar (閃亮的星)》之銘言: : 參考這樣的觀念=> : reverse(p) : { : if(p->next!=null) : reverse(p->next); : cout<<p->data; : } : 這是把字串reverse秀出來而已, 而中正這題是多了一個灌到原字元的步驟, : 需要多加index做修正... : ※ 引述《dynamicy (小人物)》之銘言: : : 這樣有recusive function嘛? : : 個人感覺只有交換而已...?? 請問是指我寫的程式結果只有在程式內部將字反轉, 但沒有將反轉的字串再傳回到主程式嗎? 可是如果要傳大量的資料,不是用陣列指標等就可以了? 那為什麼這題我用了陣列,卻沒有修改到主程式的陣列呢? ========================================================================= 以下是原題 22. Write a recursive function reverse_string to reverse a string by C. For example, char a[] = "ABCDEFGH"; printf("%s/n",a); /*"ABCDEFGH*/ reverse_string(a); printf("%s/n",a); /*"HGFEDCBA*/ 以下是我寫的程式 void reverse_string (chat a[]){ char string[]; int m=0,n=0; while(a[m]!='\0'){ m++; } m--; while(m>=0){ string[n]=a[m] m--; n++; } while(n>=0){ a[n]=string[n] n--; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.139.179.190
erichugh:recursive function....要遞迴呼叫阿.....140.115.216.182 06/17
dynamicy:終於有人懂我的意思了...沒有用遞迴呼叫... 218.170.38.85 06/18
dynamicy:應該還是白寫吧...如果只是字串反轉的話, 218.170.38.85 06/18
dynamicy:就有多到不行得寫法了,這堤地回不好寫>"< 218.170.38.85 06/18
Elfiend:嗯嗯~抱歉沒看清楚題目 >.<"220.139.132.172 06/18
> -------------------------------------------------------------------------- < 作者: flashstar (閃亮的星) 看板: TransCSI 標題: Re: [考古] 中正-93 有錯請指正 時間: Fri Jun 17 20:27:36 2005 我的意思是指我提供的是字串反轉利用遞迴的觀念, 而你的程式中完全沒有使用到遞迴的觀念, 遞迴一定要有自身呼叫的動作呀... ※ 引述《Elfiend (小孩)》之銘言: : ※ 引述《flashstar (閃亮的星)》之銘言: : : 參考這樣的觀念=> : : reverse(p) : : { : : if(p->next!=null) : : reverse(p->next); : : cout<<p->data; : : } : : 這是把字串reverse秀出來而已, 而中正這題是多了一個灌到原字元的步驟, : : 需要多加index做修正... : 請問是指我寫的程式結果只有在程式內部將字反轉, : 但沒有將反轉的字串再傳回到主程式嗎? : 可是如果要傳大量的資料,不是用陣列指標等就可以了? : 那為什麼這題我用了陣列,卻沒有修改到主程式的陣列呢? : ========================================================================= > -------------------------------------------------------------------------- < 作者: Elfiend (小孩) 看板: TransCSI 標題: Re: [考古] 中正-93 有錯請指正 時間: Sat Jun 18 22:01:46 2005 ※ 引述《flashstar (閃亮的星)》之銘言: : 我的意思是指我提供的是字串反轉利用遞迴的觀念, : 而你的程式中完全沒有使用到遞迴的觀念, : 遞迴一定要有自身呼叫的動作呀... 嗯嗯,抱歉,沒看清楚題目。 那如果我這樣寫的話,算對嗎? 靜態變數可以給自己的程序用吧? void reverse_string (chat a[]){ char str; static int m=0,n=0,flag=0; int test; if(a[m]!='\0' && flag=0){ m++; 遞迴在這 reverse_string(a); } else flag = 1; m--; test = m - n; 交換在這 if(test > 0){ str = a{m]; a[m] = a[n]; a[n] = str ; n++; } } > -------------------------------------------------------------------------- < 作者: hsiehwei (中了哲史文的毒) 看板: TransCSI 標題: Re: [考古] 中正-93 有錯請指正 時間: Sun Jun 19 22:01:14 2005 ※ 引述《Elfiend (小孩)》之銘言: : ※ 引述《flashstar (閃亮的星)》之銘言: : : 我的意思是指我提供的是字串反轉利用遞迴的觀念, : : 而你的程式中完全沒有使用到遞迴的觀念, : : 遞迴一定要有自身呼叫的動作呀... int main() { char * test = "abcdefg cd"; cout << "test: " << test << "\n"; cout << "reverse test: "; reverse(test); } void reverse(char *st) { if(*st != '\0') { reverse(st+1); cout << *st; } } -- 拉哩拉雜的網路日誌,我的空間有我的存在 http://blog.yam.com/hsiehwei -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.111.69
dynamicy:高手...我自己想到的也沒辦法寫那麼簡潔好懂>"< 218.170.47.242 06/19