[英]Explanation of Output For Simple Reverse String Algorithm in C
這只是一個反轉字符串的簡單程序(如下所示)。
我了解如何實際遞歸部分工作,我只是對將打印語句放在特定位置時得到的 output 有點困惑。
#include <stdio.h>
char *reverse_string(char *x, int start, int end) {
char ch;
if (start < end) {
ch = *(x + start);
*(x + start) = *(x + end);
*(x + end) = ch;
printf("Before: %s\n", x);
reverse_string(x, ++start, --end);
printf("After: %s\n", x);
}
return x;
}
int main() {
char testString[] = "ABCDEF";
char *newString[7];
printf("Original: %s\n\n", testString);
*newString = reverse_string(testString, 0, 5);
printf("\nReversed: %s\n", *newString);
return 0;
}
當我用筆和紙跟蹤這個程序時,我預測 output 將如下所示:
Original: ABCDEF
Before: FBCDEA
Before: FECDBA
Before: FEDCBA
After: FEDCBA
After: FEDCBA
After: FEDCBA
Reversed: FEDCBA
但是,我得到的實際 output 是:
Original: ABCDEF
Before: FBCDEA
Before: FECDBA
Before: FEDCBA
After: FEDCBA
After: FEDCBA
After: FEDCBA
Reversed: FEDCBA
可能有點難以看出,但我預測的和實際發生的情況之間的前兩個“之前”打印語句是不同的。
我只是有點困惑,為什么它們都一樣?
對此的任何解釋將不勝感激! 謝謝!!
沒關系,我沒有意識到輸出是一樣的。 剛剛檢查了我的程序,我確實正確地復制了它們。 我想我對 output 的預測是正確的,畢竟哈哈。 給大家帶來的不便深表歉意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.