【发布时间】:2020-09-08 19:14:15
【问题描述】:
这是一个我无法解决的问题 该程序应该计算一个数字的重复次数,但是当我运行程序时,该函数似乎不会调用自己一次,直到数组按要求结束 有什么帮助吗? 这是代码,请看一下:)
#include <stdio.h>
int count(int arr[],int counter,int size, int num,int i) {
if (size != 0) {
while (i<10) {
if (arr[size - i] == num) {
count(arr, size, counter++, num, i++);
}
else
return counter;
}
}
int main() {
int result,n,i=1;
int arr[] = {1,2,2,3,7,2,5,3,8,7};
scanf("%d", &n);
result=count(arr, 0,10,n,i);
printf("%d", result);
return 0;
}
【问题讨论】:
-
当它递归调用自己时,它做错了两件事:(1)它没有返回任何东西(你的编译器应该给你一个警告),以及(2)它忽略了返回的值递归调用。
-
@TomKarzes 是的,你是对的,那么我应该怎么做才能解决这个问题?
-
附带问题:反问:如果您将
0作为大小传递,您的函数会发生什么? -
为什么
size和counter在您的通话中颠倒了?这是故意的吗?
标签: c++