下面的代码是我的书,我需要跟踪它的执行,显示为每个递归调用创建的堆栈帧、存储在堆栈帧中的值以及返回的值。我感到困惑的地方是第 17 行behead(s+1,n-1)
,因为s
它是一个字符串变量,所以如何将它添加为一个整数。由于这个细节,我无法运行此代码。
#define Z 3
string behead( string s, int n );
int main( void )
{
string answer;
char word[] = "distrust";
printf( "\nBeheading the victim: %s?\n", word );
answer = behead( word, Z );
printf( "Now: %s!\n\n", answer );
}
string behead( string s, int n )
{
if (n == 0) return s;
else return behead( s + 1, n - 1 );
}