计算桃子有多少,有递归和递推两种方法。
/*
*
* 问题描述:某人某日摘若干桃子,每天卖出一半并且吃掉一个,最后一天(第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;
}
}