一個遞回的程式!幫解答

#include<stdio.h> #include<stdlib.h> void reserve(const char * const sPtr); int main() { char sentence[80]; printf("Enter a line text :\n"); gets(sentence); printf("your text is :\n"); ... show more #include<stdio.h>
#include<stdlib.h>

void reserve(const char * const sPtr);
int main()
{
char sentence[80];
printf("Enter a line text :\n");

gets(sentence);

printf("your text is :\n");
reserve(sentence);
system("PAUSE");

return 0;

}
void reserve(const char * const sPtr)
{
if ((sPtr[0])=='\0'){return;}
else{
reserve(&sPtr[1]);
putchar(sPtr[0]);
}
}

這個 INPUT 12345 會 OUTPUT 54321 不太懂為什麼會輸出成54321?
reserve()這個函式運作的方式?
可以一步一步解釋一下嗎?
Update: 不好意思!!我還是不太懂reserve(&sPtr[1]);

如果這個指標指向第2個字元那不是應該印2345嗎?

還有一個疑問??我看程式碼感覺都

if ((sPtr[0])=='\\0'){return;}
else{
reserve(&sPtr[1]);<=最多執行到這

因為如果'\\0'成立就直接返回,反之則再執行一次reserve()??

再麻煩大大在開解我一次>< 多謝了!!
2 answers 2