码迷,mamicode.com
首页 > 其他好文 > 详细

递归解决分鱼问题

时间:2015-04-04 12:18:02      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:c   算法   

问题:

           5个人夜间捕鱼,早上A先醒来,将鱼分为5份,将多的一条扔进海里,然后B醒来,不知道A已经拿走一份鱼,就将剩下的鱼分成5份,扔掉多余的一条,接着C,D,E醒来,按同样的方法分鱼,问这5个人合伙捕到多少条鱼,每个人醒来后所看到多少条鱼。

#include <stdio.h>
#include <stdlib.h>
int fish(int n, int x);
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	int i=0, flag = 0, x;
	do{
		i=i+1;
		x=i*5+1;
		if(fish(5,x))//递归判断
		{
			flag = 1;     //flag标识
			printf("五个人合伙捕到的鱼总数是%d\n", x);
		}
	}while(!flag);
	return 0;
}

int fish(int n, int x)//x表示人数,x表示醒来后剩下的鱼
{
	if(x%5==1)
	{
		if(n==1)
			return 1;
		else
			return fish(n-1, (x-1)/5*4);
	}
	return 0;
	
}//这里递归的作用是作为判断条件


递归解决分鱼问题

标签:c   算法   

原文地址:http://blog.csdn.net/orangeisnotapple/article/details/44871627

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!