C语言猴子吃桃递归法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

-------------------------------------
#include<stdio.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
参考技术A #include <stdio.h>
#include<stdlib.h>
#include<math.h>

  int Monkey(int n);

 main()
 
int n; //猴子吃桃的天数,由用户输入

printf("Input days n:");
scanf("%d",&n);

//增强函数的健壮性
if(n<=0)
printf("data error!\\n");
else
printf("x=%d\\n",Monkey(n));

system("pause");
 

 //函数功能:用递归法求累加
 int Monkey(int n)
 
int x;
if(n==1)
x=1;
else
x=2*(Monkey(n-1)+1);
return x;
 

参考技术B 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
2.程序源代码:
main()

int day,x1,x2;
day=9;
x2=1;
while(day>0)
x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;

printf("the total is %d\n",x1);

==============================================================

参考资料:http://www.programfan.com/club/showpost.asp?id=27529

参考技术C #include <stdio.h>
#include<stdlib.h>
#include<math.h>
int Monkey(int n);
main()

int n; //猴子吃桃的天数,由用户输入
printf("Input days n:");
scanf("%d",&n);
//增强函数的健壮性
if(n<=0)
printf("data error!\n");
else
printf("x=%d\n",Monkey(n));
system("pause");

//函数功能:用递归法求累加
int Monkey(int n)

int x;
if(n==1)
x=1;
else
x=2*(Monkey(n-1)+1);
return x;
参考技术D 我用c语言写了一个
你看能不能懂!!
c语言转java很好转的
你关键是看懂每个语句的意思就成
理解思路就好使(ps:之所以不直接给你java程序希望你能体谅
因为那样你没有思考)你学java
c语言一定学过点
如果那句不懂就继续问我
这个用for循环也可以做的
while简单点
1.程序分析:采取逆向思维的方法,从后往前推断。
2.程序源代码:
#include
"stdio.h"
#include
"conio.h"
main()

int
day,x1,x2;
day=9;
x2=1;
while(day>0)

x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;

printf("the
total
is
%d\n",x1);
getch();

以上是关于C语言猴子吃桃递归法的主要内容,如果未能解决你的问题,请参考以下文章

C语言递归问题 猴子吃桃

用递归函数解决猴子吃桃桃问题。问题描述如下

C语言 用递归算法来解决猴子吃桃问题。:一天一只猴子摘下一堆桃子,吃了一半,觉得不过瘾,又多吃了一

猴子吃桃详解

java经典算法题——猴子吃桃

猴子吃桃(递归)