qq_43412960 2019-10-27 12:00 采纳率: 78.6%
浏览 331
已结题

这是一个关于函数递归的问题

#include<stdio.h>
#include<conio.h>
/*分鱼递归函数*/
int fish(int n, int x)
{
    if((x-1)%5 == 0)
    {
        if(n == 1)
            return 1;  /*递归出口*/
       else
            return fish(n-1, (x-1)/5*4);  /*递归调用*/
    }
    return 0;  /*x不是符合题意的解,返回0*/
}
int main()
{
    int i=0, flag=0, x;
    do
    {
        i=i+1;
      x=i*5+1;  /*x最小值为6,以后每次增加5*/
       if(fish(5, x))  /*将x传入分鱼递归函数进行检验*/
        {
            flag=1;  /*找到第一个符合题意的x则置标志位为1*/
            printf("五个人合伙捕到的鱼总数为%d\n", x);
        }
    }
    while(!flag);  /*未找到符合题意的x,继续循环,否则退出循环*/
    getch();

    return 0;
}


我调试这个代码
fish函数,调试到return 0的时候,有的时候竟然下一步是else 下面的 return fish(n-1,(x-1)/5*4),,不是main函数,好奇怪

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-10-27 12:15
    关注

    这很正常, return fish(n-1, (x-1)/5*4);这里调用了fish,自然下一层的return返回到了else那里

    你可以写

    else
    {
        int rreult = fish(n-1, (x-1)/5*4);  /*递归调用*/
        return result;
    }
    

    断点打在result看下

    评论

报告相同问题?

悬赏问题

  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件