首页 > 其他 > 详细

递归求立方根

时间:2020-08-18 11:51:52      阅读:91      评论:0      收藏:0      [点我收藏+]

题目描述:

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

 

输入:

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

 

输出:

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

 

样例输入:

4654684 1
65461 23

样例输出:

3103122.666667
40.302088

链接:

http://codeup.cn/problem.php?cid=100000588&pid=10

 

思路:有两种方法,一种是递归,一种是迭代

1.递归

#include<iostream>
#include<iomanip>
using namespace std;
double y(double x,int n){
    double ans;
    if(n==0){
        ans=1.0*x;
        return ans;
    }
    else{
        ans=y(x,n-1)*2/3+x/(3*y(x,n-1)*y(x,n-1));
        return ans;
    }
}

int main(){
    double x;
    int n;
    while(cin>>x>>n){
        cout<<fixed<<setprecision(6)<<y(x,n)<<endl;
    }
    return 0;
}

技术分享图片

 

 

2.迭代

#include <stdio.h>
int main(){
    int x, n;
    while(scanf("%d%d", &x, &n) != EOF){
    double sum = x;
    for(int i = 0; i < n; i++)
        sum = sum * 2 / 3 + x / ( 3 * sum * sum);
    printf("%.6f\n", sum);
    }
    return 0;
}

技术分享图片

 

递归求立方根

原文:https://www.cnblogs.com/ak918xp/p/13522433.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!