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

qq_45048242 2019-05-11 01:01:06
买买提将养的一缸金鱼分四次出售:第一次卖出全部的一半加一条,第二次卖出余下的三分之一加两条,第三次卖出余下的四分之一家三条,最后卖出余下的27条。编程输出原来鱼缸中共有多少条鱼。
...全文
277 点赞 收藏 12
写回复
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;
}

回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告