猴子问题递归函数c语言 用递归方法解决猴子吃桃问题python

C语言 猴子分桃问题。求用递归函数解

代码和分析如下:

公司主营业务:成都网站设计、网站制作、外贸营销网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出宜章免费做网站回馈大家。

#includestdio.h

int n,k,t=0; // t代表分配的次数,n只猴子,k个桃子

bool fun(int m)

{

if(m=k) return false; //如果当前猴子可分配的桃子少于k个,返回false

if(m%n != k) return false; //如果当前的桃子%n !=k,返回false

t++; //当前猴子可分配桃子

if(t=n) return true; //分配了n次,满足条件退出

if(!fun(m-k-m/n)) return false; // 下一个猴子可以分m-k-m/n只桃子

return true; //以上条件都满足,返回true

}

int main()

{

scanf("%d%d", n, k);

if(n==1) {printf("%d",1+k); return 0;} // 如果只有1只猴子,直接输出,退出

for(int i=1i++)

{

t = 0; //每次循环重新计数

int m = n*i + k; //不要直接让m从1开始循环。反正m肯定%n ==k

if(fun(m))

{

printf("%d", m);

break;

}

}

return 0;

}

测了几组数据,比如2个猴子1个桃子,就是7。上述程序对于只有1个猴子的时候有问题,但是将m只桃子分成1等份剩余k个这样是否有意义呢?

如果有的话,那么如果只有一只猴子,直接输出1+k就可以了。

C语言猴子吃桃递归法

一个猴子摘了一些桃子,它每天吃了其中的一半然后再多吃了一个,

直到第10天,它发现只有1个桃子了,问它第一天摘了多少个桃子?

猴子分N天吃完了桃子,要想求出第1天的桃子数,就先要求出第2天的桃子数,.......因此,有:

a1=(a2+1)*2;

a2=(a3+1)*2;

a3=(a4+1)*2;

......

a9=(a10+1)*2;

a10=1;

现在就知道了算法,我们可以用递归来求解:

int qiu(int a,int n)

{

if(n==1) a=1; //第10天就只剩1个了

else a=(a(n-1)+1)*2; //前一天总比后1天多一半加1

}

-------------------------------------

#includestdio.h

int qiu(int a,int n);

main(){

int zuih=1,tians=10;//最后一天的个数,天数

long sum;

sum=qiu(1,10);

printf("di yi tian you %ld ge.\n"):

}

int qiu(int a,int n)

{

if(n==1) a=1; //第10天就只剩1个了

else a=(a(n-1)+1)*2; //前一天总比后1天多一半加1

}

C语言递归问题 猴子吃桃

你不应该在被调函数中定义m=1 不然当你反复调用被调函数是 m都会被重新赋值。

我的程序:

#include stdio.h

int sb(int,int);

int main( )

{

int n;

scanf("%d",n);

printf("The monkey got %d peachs in first day.\n",sb(1,n));

return 0;

}

int sb(int m,int n)

{

if(m==n)

return 1;

else

return 2*(sb(m+1,n)+m);

}

C语言猴子吃桃问题递归法

/*猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。*/

/*第二天又将剩下的桃子吃掉一半,又多吃了一个。*/

/*以后每天都吃前一天剩下的一半零一个。*/

/*到第10天在想吃的时候就剩一个桃子了*/

/*问第一天共摘下来多少个桃子?*/

#include stdio.h

#include stdlib.h

#include conio.h

/*第n天所剩桃子数*/

int getPeachNumber (int n) {

int num; /*定义所剩桃子数*/

int i=0;

if (n==10)  

return 1; /*递归结束*/

else {

num = getPeachNumber(n+1)*2 + 2; /*递归*/

printf("第%d天:%d个桃子\n", n, num); /*第n天剩num个桃子*/ 

}

return num;

}

int main (void) {

int num;

puts ("每天剩余的桃子数:");

num = getPeachNumber (1);

putchar ('\n');

puts ("================================================================");

putchar ('\n');

printf("猴子第一天摘了%d个桃子!\n", num);

putchar ('\n');

getch (); /*屏幕暂留*/

return 0;

}

运行结果


当前名称:猴子问题递归函数c语言 用递归方法解决猴子吃桃问题python
标题链接:http://scyanting.com/article/ddghcjd.html