c - C 中的递归代码

标签 c recursion

我正在尝试编写一个代码来检查数组geusses中有多少个存在于数组 battelships仅使用递归 我不明白为什么这个功能 checkCellsHit(int bships[],int lengthBS,int guesses[],int lengthG)不起作用。

函数checkHit(int battleships[], int length, int guess)工作正常并检查号码是否 guess存在于battelships .

请注意,每个用户输入都以负数结尾。 即时:

Player 1 battleship locations:
0 5 10 2 3 4 7 -3
Player2 guesses:
11 12 13 -4
Battleship cells hit: 0

-

  #include <stdio.h>
  #define MAX 200`

  int checkHit(int battleships[], int length, int guess){
    int value=0;
    if (battleships[0]<0) {
        return 0;
    }
    if (battleships[0]==guess) {
        return 1;
    }
    else {
        value=checkHit((battleships+1), (length-1), guess);
        return value;
    }
  }

  int checkCellsHit(int bships[],int lengthBS,int guesses[],int lengthG){
    int count=0;
    if (bships[0]<0) {
        return 0;
    }
    if (checkHit(bships, lengthBS, guesses[0])) {
        count++;
    }
    count=count+checkCellsHit(bships, lengthBS-1, guesses+1, lengthG-1);
    return count;
  }

  int main(){
    int battelships[MAX]={0}, guess[MAX]={0};
    int i=0,j=0, value;
    printf("Player1 battleship locations:\n");
    scanf("%d", &battelships[i]);
    for (i=1; battelships[i-1]>=0; i++) {
        scanf("%d", &battelships[i]);
    }
    printf("Player2 guesses::\n");
    scanf("%d", &guess[j]);
    for (j=1; battelships[j-1]>=0; j++) {
        scanf("%d", &guess[j]);
    }

    value=checkCellsHit(battelships, i, guess, j);

    printf("%d", value);

    return 0;
  }

最佳答案

我认为你的问题在于

count=count+checkCellsHit(bships, lengthBS-1, guesses+1, lengthG-1);

checkCellsHit中,您将检查战斗舰艇和猜测。递归的下一步,您需要减少猜测,而不是战舰。

因此更改以下代码应该可以修复它

count=count+checkCellsHit(bships, lengthBS, guesses+1, lengthG-1);

关于c - C 中的递归代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21208296/

相关文章:

python - 从路径列表中生成字典

c - C中的递归函数是如何工作的

c - 数组数组的递归

c - AND 按位运算的数学方程式?

c - 无法理解 __syncthreads()

c - 在 'C' 代码中使用链接器命令文件变量的绝对值

java - 内存管理递归Java

python - 是否有内置的 dict.get() 的递归版本?

c - 在 Opencv 中使用 IPL_DEPTH_32f

c - qsort如何修改指向字符串的指针?