Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 用递归函数编制数学程序_C_Math_Recursion - Fatal编程技术网

C 用递归函数编制数学程序

C 用递归函数编制数学程序,c,math,recursion,C,Math,Recursion,我想编程数学函数f(x)=sqrt(1^1+sqrt(2^2+sqrt(3^3)+…+sqrt(x^x)),其中x应该是1 f(x)=sqrt(1^1+sqrt(2^2+(sqrt(3^3)+…+(sqrt(x^x))))… (假设以粗体显示) 相当地 f(x)=g(1,x) 在哪里 g(i,n)=sqrt(i^i+g(i+1,n))如果i f(x)=sqrt(1^1+sqrt(2^2+(sqrt(3^3)+…+(sqrt(x^x))))… (假设以粗体显示) 相当地 f(x)=g(1,x) 在

我想编程数学函数
f(x)=sqrt(1^1+sqrt(2^2+sqrt(3^3)+…+sqrt(x^x))
,其中x应该是
1
f(x)=sqrt(1^1+sqrt(2^2+sqrt(3^3)+…+sqrt(x^x))))…

(假设以粗体显示)

相当地

f(x)=g(1,x)

在哪里

g(i,n)=sqrt(i^i+g(i+1,n))如果i f(x)=sqrt(1^1+sqrt(2^2+sqrt(3^3)+…+sqrt(x^x))))…

(假设以粗体显示)

相当地

f(x)=g(1,x)

在哪里


g(i,n)=sqrt(i^i+g(i+1,n))如果我对这十个数字感到兴奋,或者这是一个阶乘?提示:
double f1Rek(int k,int x)
你对这十个数字的意思是什么?1是的,是1 Beta吗?你能再解释一下吗?你对这十个数字感到兴奋还是一个阶乘?提示:
double f1Rek(int k,int x)
10是什么意思?1是的,是1 Beta吗?你能再解释一下吗?g(1,x)的第一个参数应该总是1吗?再看看…
g(i+1,n)
…那不是1。最初的第一个参数是1,因为这是系列的开始。第二个参数总是
n
(f的x参数)因为这是终止值。@T.C.“
g(1,x)
的第一个参数应该始终是这样表示的,它怎么可能是其他的呢?我想你的意思是
g(I,x)
,Jim回答了。好的,我明白了。这是另一种解决方案,但我只用了一个参数就尝试了。Jim Balter,函数不能只用一个参数吗?g(1,x)的第一个参数应该始终是一个参数?再看一遍……
g(i+1,n)
…那不是1。初始第一个参数是1,因为这是序列的开始方式。第二个参数始终是
n
(f的x参数),因为这是终止值。@T.C.“
g(1,x)
的第一个参数应该始终是1”这样呈现,怎么可能是其他的呢?我想你指的是
g(I,x)
,Jim回答了。好的,我明白了。这是另一个解决方案,但我只用一个参数就尝试了。Jim Balter,函数不能只用一个参数吗?如果你只需要正确的结果,那么它很有用……你应该改变你的问题。但是如果你正在做作业,那应该帮助你理解如何编写递归函数是没有用的。它与家庭作业无关。我只是试着用C编写数学程序,没有别的。如果你需要的只是正确的结果,那么它是有用的…你应该改变你的问题。但是如果你在做家庭作业,应该帮助你理解如何编写递归函数,那么它就没有用了这和家庭作业无关。我只是试着用C语言编写数学程序,别的什么都没有。
double f1Rek(int x)
{ 
   if( x < 1 ) return sqrt(power(x,x));
   return sqrt(power(x,x) + f1Rek(x-1));
}
double power(int x, int n)
{
   if( n == 0 ) return 1.0;
   if( x == 0 ) return 0.0;
   if( exp > 0 )
   {
       return n * power(n, exp - 1);
   }
   if( exp < 0 )
   {
       return 1 / ( n * power(n, -(exp-1));
   }
}
double f2Rek(int i, int x)
{
   if( i <= x )
   {
      return sqrt(power(i,i) + f2Rek(i+1, x));
   }
   else return 0.0;
}
double f(int x)
{
   double g(int i)
   {
       return (i <= x)? sqrt(pow(i, i) + g(i+1)) : 0.0;
   }

   return g(1);
}
double f1Rek(int x)
{  
   double res = 0.0;
   for(int i=x; i > 0; i--) {
     res = sqrt(power(i,i) + res));
   }
   return res;
}