想用递归的方式处理:比较二维数组不同行的字符串大小,并选出字符串最大的那一行

想用递归的方式处理:比较二维数组不同行的字符串大小,并选出字符串最大的那一行
请问:本题可以用递归解决吗?可以的话帮忙看一下代码
以下为我的代码与结果

img


以下为代码报错异常界面

img

仅供参考

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define N 3
#define M 20

void my_strcmp(int line, char *string, char arr[N][M])
{
    // 第一次进入比较第0行和第1行
    if(line == 0)
    {
        if(strcmp(arr[0], arr[1]) > 0)
        {
            strcpy(string, arr[0]);
        }
        else
        {
            strcpy(string, arr[1]);
        }
    }
    else
    {
        // 第二次递归进来比较上一次的最大行和当前行
        if(strcmp(arr[line], string) > 0)
        {
            strcpy(string, arr[line]);
        }
    }
   
    if(line == (N - 1))
    {
        // 比较到最后一行返回
        return;
    }
    else
    {
        // 行数+1递归比较
        if (line == 0)
        {
            // 第一次进来的时候比较了两行
            my_strcmp(line + 2, string, arr);
        }
        else
        {
            // 后面再进来一次比较一行
            my_strcmp(line + 1, string, arr);
        }
    }
}
int main()
{
    char arr[N][M] = {0};
    char string[20] = {0};
    printf("Input Three Line:\n");
    int i = 0;
    for (i = 0;i < 3;i++)
    {
        gets(arr[i]);
    }
    my_strcmp(0, string, arr);
    printf("the largest string is:%s\n", string);
    system("pause");
}