【发布时间】:2016-02-02 17:23:35
【问题描述】:
如标题所述,我正在处理一个在 main 中多次调用的函数,其目的是计算字符数组中的元音,并且仅在第一次调用时结果才正确。之后,它不是从零开始,而是从停止的地方开始计数,导致结果不正确。
这是函数:
int function(char *pointer, int num_of_elements)
{
int i=0;
if (num_of_elements==0) return i;
if ((*pointer== 'a') || (*pointer== 'A') || (*pointer== 'e') || (*pointer== 'E') || (*pointer== 'i') || (*pointer== 'I' )||( *pointer=='o') || (*pointer =='O') || (*pointer== 'u') || (*pointer== 'U')) {i++;}
pointer++;
num_of_elements--;
return function(pointer,num_of_elements);
}
指针指向字符数组,变量i是计数器。
【问题讨论】:
-
我很惊讶这是第一次工作。您正在递归地执行此操作,这有点奇怪,但没有保留
i从调用到调用的当前值。我会期待return (i+function(pointer, num_of_elements)); -
@intersomnium 您使用递归(函数调用本身)有什么具体(可能是纯粹的学术)原因吗?如果不是,那么这是一项重大罪行;)
-
是的,就是这样,作为回报,我失踪了,谢谢。 :)
-
第一次成功是因为在我的实际函数中我写了 static int i;但是在这里发布问题时,我忘了写静态部分..
-
@gollum 哈哈,是的,有。这是在考试题中指定的。
标签: c function variables counter declaration