嵌套根号的计算函数:
2023-12-15 05:02:34
如:输入2,3
这道题我选择用递归的来完成,代码如下:
// 定义一个函数,用于计算嵌套根号
float sqrt_ca(double x, int n, double x0)
{
// 如果嵌套次数为1,直接返回x的平方根
if (n == 1)
{
return sqrt(x);
}
// 否则,递归调用sqrt_ca函数,计算嵌套根号
else
{
float temp = sqrt_ca(sqrt(x) + x0, n - 1, x0);
return temp;
}
}
这里有一个点值得说明:那么就是x0的作用,这个是一个比较难理解的点,看到之后可能会点蒙,我不好叙述,简单的写了递归的过程,以及如果将x0替换为x会发生什么?
我们先看错误版本的代码:
// 定义一个函数,用于计算嵌套根号
float sqrt_ca(double x, int n)
{
// 如果嵌套次数为1,直接返回x的平方根
if (n == 1)
{
return sqrt(x);
}
// 否则,递归调用sqrt_ca函数,计算嵌套根号
else
{
float temp = sqrt_ca(sqrt(x) + x, n - 1;
return temp;
}
}
x=2,n=3,输出结果:2.29,正确的答案是1.96
我们来看一下2.29和1.96是怎么算出来的:
所以错误的点在于x的值,也就是要嵌套的值发生了改变.
对于这道题的错误版本还有很多,大多都是这个错误,因为我也是一步步改代码,调试出来的,这个递归的结构不算复杂,就是在这些细节上需要注意.
以下是对于这道题的完整解答:因为有sqrt,别忘了#include <math.h>
int main()
{
double x;
int n;
printf("请输入x,n:");
scanf("%lf,%d", &x, &n);
printf("y=%.2f", sqrt_ca(x, n, x));
return 0;
}
这道题就分享到这里,希望大家喜欢,如有错误,请评论区指出,谢谢.
文章来源:https://blog.csdn.net/Mrluo386/article/details/135002088
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!