参考方法(递归法):
#include
#include
double digui(double a,int n)//这里的n为下落与反弹的总次数,一个来与回n=2
/*
该函数返回第N次落地后经过的总长度,
并打印出第N次反弹的高度(N与该函数参数n意义不同)
*/
{
if(n>0)
if(n%2)//判断是下落还是反弹
return digui(a/2,--n)+a;//递归调用自身函数,a变为a/2
else
return digui(a,--n)+a;//递归调用自身函数,a不变
else
{
printf("反弹高度为%lf米\n",a);
return 0;
}
}
void main()
{
double a;
int n;
printf("请输入原始高度:");
scanf("%lf",&a);
printf("请输入有多少次落地:");
scanf("%d",&n);
printf("第%d次",n);
printf("在第%d次落地时,共经过%lf米\n",n,digui(a,2*n-1));
/*2*n-1表示来与回的总次数*/
system("pause");
}
huanhuan
huanhuan
992***291@qq.com2年前 (2019-07-28)