#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个鸭子,问他出发时有多少只鸭子?
#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;
}
第11行错了,在递归调用的最后一层,没有返回值,应该加个return number ,在if(0 == i)这里面加
#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为出发时的鸭子数
return number;
}
else
{
number = (number + 1 ) * 2; //计算在经过第i个村子前的鸭子数number
x = number / 2 + 1; //计算在经过第i 个村子时卖的鸭子数x
cout << "经过第" << i << "个村子时,他卖出" << x << "只鸭子。" << endl;
return Number(i - 1);
}
}
int main()
{
int a = Number(7);
cout << "他出发时共赶了" << a<<"只鸭子";
}
#include <stdio.h>
#include "iostream"
using namespace std;
int x;//多的全局变量删掉
void Number(int i,int number)//改成void
{
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;
Number(i - 1,number);//不用return
}
}
int main()
{
int n;
cin>>n;
Number(7,n);
return 0;
}
#include <stdio.h>
#include "iostream"
using namespace std;
//int number = 2, x, i = 7;//尽量不使用全局变量(以后开发中不建议)
void Number(int i, int number)//可以不返回int型,直接在该函数里输出;
{
int x;//存放经过每个村子鸭子卖的数量
if (i==0) //当i为0时,结束递归调用(递归出口条件)(尽量规范不要写成0==i)
{
cout << "出发时鸭子数量:" << number << endl;//当经过的村子数为0时,number为出发时的鸭子数
}
else
{
number = (number + 1) * 2; //计算在经过第i个村子前的鸭子数number
x = number / 2 + 1; //计算在经过第i 个村子时卖的鸭子数x
cout << "到第" << i << "个村子时,";
cout << "鸭子数量为:" << number ;
cout<<",他卖出:" << x << "只鸭子"<<endl;
Number(i - 1, number);//再次调用直到i==0
}
}
int main()
{
int n;
cin >> n;//键盘输入剩余鸭子数量,将其传入下行函数
Number(7, n);//计算出发时的鸭子函数
return 0;
}
#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);
}
我不认为你的有问题,你可以看看我的试试
#include <iostream>
using namespace std;
//利用递归求解
void Ideas(int Over_Sum,int Vi_Sum) {
if (Vi_Sum == 1) {
cout << "经过第" << Vi_Sum << "个村子时,他卖出" << Over_Sum + 2 << "只鸭子。" << endl;
cout << "他出发时共赶了" << (Over_Sum + 1) * 2 << "只鸭子。" << endl;
}
else {
cout << "经过第" << Vi_Sum << "个村子时,他卖出" << Over_Sum + 2 << "只鸭子。" << endl;
Ideas((Over_Sum + 1) * 2, Vi_Sum - 1);
}
}
int main() {
int Init_Sum = 0;//初始鸭子总数
int Village_Sum = 0;//村庄总数
cin >> Init_Sum >> Village_Sum;//输入
Ideas(Init_Sum, Village_Sum);
return 0;
}
if(0 == i) //当i为0时,结束递归调用
{
cout << "他出发时共赶了" << num << "只鸭子。" << endl; //当经过的村子数为0时,num为出发时的鸭子数
}
这里需要写return返回值,其它都正确。
如有帮助,请采纳!