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