ArLo182317 2022-03-29 07:00 采纳率: 86.7%
浏览 38
已结题

怎么实现数组的递归子函数


#include<stdio.h>
#include<string.h> 
#include<stdlib.h>
int search(char *storage){
    int len;
    len=strlen(storage);
    for(int d=0;d<len;d++){
        if(storage[d]!='P'&&storage[d]!='T'&&storage[d]!='A'){
            search(storage[d+1]);
        }else{
            return 0;
        }
    }
    return 1;
}
int main(){
    char storage[100][100];
    int n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%s",storage[i]);
}
    for(int j=i;j>=0;j--){
        search(storage[j]);
    }
    if(search){
        printf("YES\n");
    }else{
        printf("NO\n");
    }
    return 0;
}

img

展开全部

  • 写回答

4条回答 默认 最新

  • CSDN专家-link 2022-03-29 07:10
    关注

    for(int j=i;j>=0;j--){
    这个有问题啊,j应该从i-1开始
    你这个递归也有问题,main里调用传入storage[j]没问题,这时候storage是二维数组,但函数里search(storage[d+1]);就不行了,因为这里的storage是函数参数,这个参数只是char *,这样storage[d+1]就是第一个字符,正如错误提示所示,你将char传递给char * ,是错误的。改成search(&storage[d+1])可以搜索从storage下一个字符开始的内容
    另外就是最后的if(search)了,这个search不是变量,是函数指针,那肯定不是空啊,你到底想判断什么呢?是否搜索到什么东西?那你应该在上面的search函数调用时,定义一个变量接收函数返回值,如果为1,则表示搜索成功,如果找到就可以结束,那么应该再加个break

    #include<stdio.h>
    #include<string.h> 
    #include<stdlib.h>
    int search(char *storage){
        int len;
        len=strlen(storage);
        for(int d=0;d<len;d++){
            if(storage[d]!='P'&&storage[d]!='T'&&storage[d]!='A'){
                search(&storage[d+1]);
            }else{
                return 0;
            }
        }
        return 1;
    }
    int main(){
        char storage[100][100];
        int n,i,find = 0;
        scanf("%d",&n);
        for(i=0;i<n;i++){
            scanf("%s",storage[i]);
    }
        for(int j=i-1;j>=0;j--){
            find = search(storage[j]);
            if(find)
                break;
        }
        if(find){
            printf("YES\n");
        }else{
            printf("NO\n");
        }
        return 0;
    }
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    CSDN专家-link 2022-03-29 07:43

    img

    回复
    ArLo182317 2022-03-30 11:10

    抱歉我想问一下,我定义的search函数是一个int类型的函数,他有返回值,难道if(search)不会直接判断search函数的返回值吗

    回复
    CSDN专家-link 回复 ArLo182317 2022-03-30 11:21

    这怎么可能啊。。。。。。
    函数有参数的,你都不传递参数,只用函数名的话,就是函数指针,或者函数的地址。怎么可能进行什麽判断

    回复
    展开全部5条评论
查看更多回答(3条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月30日
  • 创建了问题 3月29日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部