老哥们,这个怎么用递归函数解出来啊

qq_45048242 2019-05-11 01:01:06
买买提将养的一缸金鱼分四次出售:第一次卖出全部的一半加一条,第二次卖出余下的三分之一加两条,第三次卖出余下的四分之一家三条,最后卖出余下的27条。编程输出原来鱼缸中共有多少条鱼。
...全文
304 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Italink 2019-05-17
  • 打赏
  • 举报
回复
引用 11 楼 轻箬笠 的回复:
我就好奇一件事情,如果一半的鱼、三分之一的鱼、四分之一的鱼,出现不能整除的情况咋办?难道分割出售?! 写函数的时候应该也要考虑这种情况吧
鱼已经卖出去了,现在是根据剩余几条鱼,还有卖鱼时的规律求原来的鱼有多少,不过真的有好多题目都有点脱离实际
轻箬笠 2019-05-16
  • 打赏
  • 举报
回复
我就好奇一件事情,如果一半的鱼、三分之一的鱼、四分之一的鱼,出现不能整除的情况咋办?难道分割出售?!
写函数的时候应该也要考虑这种情况吧
陌上_桑 2019-05-16
  • 打赏
  • 举报
回复
引用 5 楼 qq_45048242 的回复:
[quote=引用 3 楼 Italink的回复:]编译器不支持C++?

#include<stdio.h>
int find(int fish, int n) {
	return n ? find((n + 1) * (fish + n) / n, n - 1) : fish;
}
int main() {
	printf("%d", find(27, 3));
	return 0;
}

那个问号那里是啥意思的? 又是那里出了问题 小白一个 真的不太懂这些 [/quote] ?:是C语言中唯一的三目运算
qq_45048242 2019-05-15
  • 打赏
  • 举报
回复
谢谢老师解析,本来是不太熟悉递归函数的含义
赵4老师 2019-05-13
  • 打赏
  • 举报
回复
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门! 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出
qq_45048242 2019-05-11
  • 打赏
  • 举报
回复
引用 1 楼 Italink的回复:

#include<iostream>
using namespace std;
int find(int fish, int n) {
	return n ? find((n + 1) * (fish + n)/n, n - 1) : fish;
}
int main(){
	cout << find(27, 3) << endl;
	return 0;
}
试过好几次了,编译不出来,源代码有错。。
Italink 2019-05-11
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;
int find(int fish, int n) {
	return n ? find((n + 1) * (fish + n)/n, n - 1) : fish;
}
int main(){
	cout << find(27, 3) << endl;
	return 0;
}
Italink 2019-05-11
  • 打赏
  • 举报
回复

#include<stdio.h>
int find(int fish, int n) {
	if (n == 0)
		return fish;
	else
		return find((n + 1) * (fish + n) / n, n - 1);
	//return n!=0 ? find((n + 1) * (fish + n) / n, n - 1) : fish;		//?:三目运算符
}
int main() {
	printf("%d", find(27, 3));
	return 0;
}
qq_45048242 2019-05-11
  • 打赏
  • 举报
回复
终于弄好了 感谢这位仁兄!
qq_45048242 2019-05-11
  • 打赏
  • 举报
回复
引用 3 楼 Italink的回复:
编译器不支持C++?

#include<stdio.h>
int find(int fish, int n) {
	return n ? find((n + 1) * (fish + n) / n, n - 1) : fish;
}
int main() {
	printf("%d", find(27, 3));
	return 0;
}

那个问号那里是啥意思的? 又是那里出了问题 小白一个 真的不太懂这些 
qq_45048242 2019-05-11
  • 打赏
  • 举报
回复
那个问号那里是啥意思的? 又是那里出了问题 小白一个 真的不太懂这些
Italink 2019-05-11
  • 打赏
  • 举报
回复
编译器不支持C++?

#include<stdio.h>
int find(int fish, int n) {
	return n ? find((n + 1) * (fish + n) / n, n - 1) : fish;
}
int main() {
	printf("%d", find(27, 3));
	return 0;
}

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧