程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 遞歸-一小段c語言代碼,有疑問,求大神解答

遞歸-一小段c語言代碼,有疑問,求大神解答

編輯:編程綜合問答
一小段c語言代碼,有疑問,求大神解答

這段代碼中的!*s的意思是與*s相反嗎?
f函數是什麼原理?
還有就是為什麼最後輸出的只有一串nahginrek.
而不是有很多串?難道不是每遞歸一次就輸出一次?
求大神解答。

代碼:
#include

void f( char *s )
{
if( !*s ) {
return;
}
f( s+1 );
putchar( *s );
}
int main(void)
{
f("kernighan");
putchar('\n');
return 0;
}

最佳回答:


if( !*s )
{
return;
}
這是用來判斷字符串結束的,
當程序執行到
f( s+1 );時,會執行遞歸調用,但這時候putchar是不執行的,等到形參S指針增加到'n'時,再次調用f(s+1),就會return出去,這時候putchar就會執行,
輸出了字符n,此時,這次的調用也得以執行完畢,按照遞歸的反順序,依次得以輸出字符,所以會輸出一個反順序的字符串。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved