【发布时间】:2015-01-16 21:48:36
【问题描述】:
有人能说出这个递归函数实际上在做什么吗?我认为它什么都不做,它返回 0 并且程序停止。
对于字符串:honolulu\0
int fun(char *string){
if(*string != 'u') return 0;
return 1 + fun(string + 1);
}
【问题讨论】:
-
这是邪恶!提示:如果你的字符串不包含任何
u,你会得到一个段错误。否则,它将仅计算给定字符串的第一个u之前的字符数 -
运行看看怎么样?如果你愿意,你甚至可以打印出 1 + fun(string + 1); 的结果
-
它从头开始计算连续的
'u'。 -
另外,没有像“C/C++”这样的语言。 C 和 C++ 是两种非常不同的语言,即使它们的部分语法相似。
-
@Rerito,如果字符串内容是
"hello\0",那么函数的第一行会在遇到'h'作为第一个字符(h!=@987654329 @)。