用C语言的递归解决分鱼问题

用C语言的递归解决分鱼问题,第1张

下面代码是我自己写的,看别人代码比较累,所以如果楼主愿意,可以看看下面的代码,我会尽量讲解细致一点。

#include <stdio.h>

//sub(manth,fishleft)参数意义:manth表示第几个人分鱼,fishleft表示他分鱼时获得了多少鱼

//函数的返回结果是第manth个人分鱼时剩余的条数,如manth = 5,fishleft = 1,则表示一共捕获了3906条鱼。

int sub(int manth,int fishleft){

if(manth == 1){

fishleft = (5*fishleft +1)

printf("manth = %d,fishleft = %d\n",manth,fishleft)

return fishleft

}

fishleft = 5*sub(--manth,fishleft)+1

printf("manth = %d,fishleft = %d\n",manth+1,fishleft)

return fishleft

}

int main(void){

int manth = 5

int fishleft = 1

printf("%d\n",sub(5,1))

return 0

} //我得到的结果和楼主所给程序运行结果不一致!楼主可以自己计算,如果拍备最后一个人得到的是1条鱼,则他分鱼时应该剩余6条,manth = 2时应该剩余6*5+1 = 31条,信行manth = 3时,应该剩余31*5+1条,最后manth= 5,也就是分鱼开始的时候,应该剩余3906条鱼。

//楼主可以用自己的程序测试,当调用sub(2)时得到的是21,而不袭坦毁是31,就能证明该程序应该是用问题的。

fish number min is 25.

#include <stdio.h>

/*

甲先醒来胡旁枣,他将鱼篓中的鱼平均分成3分,发现多一条,就将多的这条扔回河里,拿着其中一份回家了,乙醒来,他将鱼篓中的鱼平均分成3分,

发现多一条,就将多的这条扔回河里,拿着其中一份回家了,丙醒来,他将鱼启手篓中的鱼平均分成3分,发现多一条,就将多的这条扔回河里,拿

着其中一份回家了,这三个人至少钓到了多少鱼?用C程序语言编译,拜托帮帮忙了

x % 3 == 1

(x -1 )*2/3 % 3 == 1

( (x -1 )*2/3 - 1)*2/3 % 3 ==1

fish number min is 25.

甲 8条 剩 16条

乙 5条 剩裤拆 10条

丙 3条

*/

int main()

{

int i

for( i = 4++i)

{

if( (i % 3) == 1 && ((( i-1)*2/3) % 3) ==1 && ((((( i-1)*2/3)-1)*2/3) % 3) == 1)

{

printf("fish number min is %d.\n",i)

break

}

}

exit(0)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12370314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存