桃子到底有多少

计算桃子有多少,有递归和递推两种方法。

/*
 *
 * 问题描述:某人某日摘若干桃子,每天卖出一半并且吃掉一个,最后一天(第n天)剩下一个。
 * 编写一个递归程序,天数n作为参数,计算一共摘了多少桃子。
 *
 * 分析问题可以得出以下的递推函数:
 * f(1) = 1                          n=1
 * f(n) = 2 * ( f(n-1) + 1 )  n>1
 *
 * 桃子问题算法程序:分别用递归和递推实现
 *
 */

#include <stdio.h>

long peach1(int n);
long peach2(int n);

int main(void)
{
    int i;
    for(i=1; i<=10; i++)
        printf("%d %ld %ld\n", i, peach1(i), peach2(i));

    return 0;
}

long peach1(int n) {
    if(n == 1)
        return 1;
    else
        return 2 * (peach1(n-1) + 1);
}

long peach2(int n) {
    if(n == 1)
        return 1;
    else {
        long res = 1L;
        while(n>1) {
            res = 2 * (res + 1);
            n--;
        }
        return res;
    }
}


posted on 2016-04-20 00:52  海岛Blog  阅读(115)  评论(0编辑  收藏  举报

导航