首页 > ACM题库 > 九度OJ > 九度-1166-迭代求立方根[解题代码]
2013
12-13

九度-1166-迭代求立方根[解题代码]

题目来源:2009年北京航空航天大学计算机研究生机试真题

题目描述:

立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n)),其中y0=x.求给定的x经过n次迭代后立方根的值。

输入:

输入有多组数据。
每组一行,输入x n。

输出:

迭代n次后的立方根,double精度,保留小数点后面六位。

样例输入:
3000000 28
样例输出:
144.224957

cpp 代码如下:
#include <stdio.h>
double f(double x, int n){
	if(n==0)
		return x;
	else{
		double temp  = f(x,n-1);
		return temp*2/3+x/(3*temp*temp);
	}
}

int main(){
	double x;
	int n;
	while(scanf("%lf",&x)!= EOF){
		scanf("%d",	&n);
		printf("%.6lf\n",f(x,n));
	}
	return 0;
}

/**************************************************************
	Problem: 1166
	User: coder
	Language: C
	Result: Accepted
	Time:0 ms
	Memory:912 kb
****************************************************************/


  1. 可以参考算法导论中的时间戳。就是结束访问时间,最后结束的顶点肯定是入度为0的顶点,因为DFS要回溯