Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.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_Recursion - Fatal编程技术网

C 如何用递归实现这个新操作?

C 如何用递归实现这个新操作?,c,recursion,C,Recursion,我有一个作业,包括一个新的操作(a[n]b),给出: a[1]b=ab a[n]1=a 2[2]3=2[2-1](2[2-1]2)2重复3次=2[1](2[1]2)=222=16 2[2]2=2[2-1]22重复2次=2[1]2=(22)=4 4[3]3=4[3-1](4[3-1]4)=4[2](4[2]4)4重复3次=4[2](4[1](4[1]4))= =4[2]444 我不需要解决方案,我只需要建议,这样我就可以自己解决问题。这里所说的可以重新表述如下 对于任何正整数a、b和n,定义

我有一个作业,包括一个新的操作(a[n]b),给出:

  • a[1]b=ab
  • a[n]1=a
  • 2[2]3=2[2-1](2[2-1]2)
    2重复3次
    =2[1](2[1]2)=222=16
  • 2[2]2=2[2-1]2
    2重复2次
    =2[1]2=(22)=4
  • 4[3]3=4[3-1](4[3-1]4)=4[2](4[2]4)
    4重复3次
    =4[2](4[1](4[1]4))=
    =4[2]444

我不需要解决方案,我只需要建议,这样我就可以自己解决问题。

这里所说的可以重新表述如下

对于任何正整数a、b和n,定义

使用类似C的语言

int myoperator (a, n, b) {
    int x, i;
    x = a;
    if (n == 1){
       x = pow(a,b);
    } else {
       for(i = 1; i < b; i++){
           x = myoperator (a, [n-1], x);
       }
    return x;
}
使用此定义可以消除上面的
for
循环

int myoperator (a, n, b) 
int a,n,b;
{
    int x;
    x = a;
    if (n == 1) 
        x = pow(a,b);
    else if (b == 1) 
                x = a;
         else {
              assert(b>1 && n>1);
              x = myoperator (a, n-1, myoperator(a,n-1,b-1));
         }
    return x;
}

请编辑您的问题以改进格式。您不能在C中重载运算符。您是想说您想要实现一个将数字提升为整数幂的递归函数吗?不,这只是一个新的操作,我应该为它编写一个递归函数,而不是幂函数。@RedX我不想在CThank中重载任何内容,非常感谢,但是您的解决方案包括“for”语句,有没有一种方法可以不使用“for”来实现呢@是的,可以用递归调用替换的
 a [n] b = a [n-1] ( a [n-1] (b-1) ).
int myoperator (a, n, b) 
int a,n,b;
{
    int x;
    x = a;
    if (n == 1) 
        x = pow(a,b);
    else if (b == 1) 
                x = a;
         else {
              assert(b>1 && n>1);
              x = myoperator (a, n-1, myoperator(a,n-1,b-1));
         }
    return x;
}