C语言猴子吃桃递归法

Python017

C语言猴子吃桃递归法,第1张

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

直到第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

}

运行结果