【发布时间】:2016-02-29 14:43:27
【问题描述】:
代码还可以返回目标号码的位置。但是,如果目标数字不在数组中,程序也应该返回 -1。还要求我应该只使用递归。
代码如下:
#include <stdio.h>
int rLookupAr(int ar[], int n, int target);
int main() {
int a[80];
int target, i, size;
printf("Enter array size: ");
scanf("%d", &size);
printf("Enter %d numbers: ", size);
for (i = 0; i < size; i++)
scanf("%d", &a[i]);
printf("Enter target number: ");
scanf("%d", &target);
printf("rLookupAr(): %d", rLookupAr(a, size, target));
return 0;
}
int rLookupAr(int ar[], int n, int target) {
/* write your code here */
if (ar[0] == target) {
if (n == 0)
return -1;
else
return 0;
} else
return 1 + rLookupAr(ar + 1, n - 1, target);
}
【问题讨论】:
-
您绝对应该在
ar的取消引用之前移动if (n == 0)检查。您还需要检查-1的递归调用的返回值。 -
有什么问题?为什么您的代码不起作用?
-
@Charlie 如果目标号码不在数组中,则 rLookupAr() 将返回 –1。
-
以后如果您不想被否决,请写出一个没有标准输入的完整示例。家庭作业问题可以,但请尊重社区时间,让问题易于理解并解释您自己尝试过的内容。