jessie_jt 2022-04-04 14:43 采纳率: 75%
浏览 917
已结题

老赵赶着鸭子去每个村庄卖,每经过一个村庄卖去所赶的鸭子的一半又一只,这样他经过了7个村庄后还剩n个鸭子,问他出发时有多少只鸭子?

运行结果及报错内容
#include <stdio.h>
#include "iostream"
using namespace std;
 
int number = 2,x,i=7;
 
int Number(int i)
{
    if(0 == i) //当i为0时,结束递归调用
    {
        cout << "他出发时共赶了" << number << "只鸭子。" << endl; //当经过的村子数为0时,number为出发时的鸭子数
    }
    else
    {
        number = (number + 1 ) * 2; //计算在经过第i个村子前的鸭子数number
        x = number / 2 + 1; //计算在经过第i 个村子时卖的鸭子数x
        cout << "经过第" << i << "个村子时,他卖出" << x << "只鸭子。" << endl;
        return Number(i - 1);
    }
}
int main()
{
    Number(7);
}


报错了Non-void function does not return a value in all control paths

我想要达到的结果

老赵赶着鸭子去每个村庄卖,每经过一个村庄卖去所赶的鸭子的一半又一只,这样他经过了7个村庄后还剩n个鸭子,问他出发时有多少只鸭子?

  • 写回答

7条回答 默认 最新

  • ciciio橙子 2022-04-07 08:05
    关注
    获得0.90元问题酬金
    
    #include <stdio.h>
    #include "iostream"
    using namespace std;
    int x;//多的全局变量删掉 
    void f(int i,int num)//改成void 
    {
        if(0 == i) //当i为0时,结束递归调用
        {
            cout << "他出发时共赶了" << num << "只鸭子。" << endl; //当经过的村子数为0时,num为出发时的鸭子数
        }
        else
        {
            num = (num + 1 ) * 2; //计算在经过第i个村子前的鸭子数num
            x = num / 2 + 1; //计算在经过第i 个村子时卖的鸭子数x
            cout << "经过第" << i << "个村子时,他卖出" << x << "只鸭子。" << endl;
            f(i - 1,num);//不用return 
        }
    }
    int main()
    {
        int n;
        cin>>n; 
        f(7,n);
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 系统已结题 4月12日
  • 创建了问题 4月4日