直到第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
}
/*猴子第一天摘下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
}
运行结果