/*
递归3
球从100米高度落下,弹起到原来高度一半,再弹起,高度为前一次的一半...
问到第10次落下后,球共经过了多少米,第10次时,弹起高度多少?
答案:
第10次弹起高度为0.1953125m
到第10次落下后,球共经过了299.609375m
分析:
第x次落下 高度 本次弹起到落下经历的路径 总共经历的路径
------------------------------------------------------------------------------------
1 100 100 100
2 50 100 200
3 25 50 250
4 12.5 25 275
5 6.25 12.5 287.5
6 3.125 6.25 293.75
7 1.5625 3.125 296.875
8 0.78125 1.5625 298.4375
9 0.390625 0.78125 299.21875
10 0.1953125 0.390625 299.609375
*/
#include "stdio.h"
#include "conio.h"
float sum;
float jump(int n)
{
float f = 0.0;
if(n == 1)
{/*结束递归调用*/
f = 100.0;
sum += f; /*第一次仅有落下过程*/
}
else
{
f = jump(n-1)/2;
sum += f*2; /*弹起、落下高度一致,都为上次高度的一半*/
}
return(f);
}
/*
*/
main()
{
int n;
while(1)
{
printf("Enter times:( >0, ctrl+c exit)/n", &n);
scanf("%d", &n);
if(n > 0)
{
sum = 0.0;
printf("tenth jump:%10.10fm/n", jump(n));
printf("total jump:%10.10fm/n", sum);
}
else
{
printf("Enter should be positive number!/n", &n);
}
}
getch();
}