C 如何用递归实现这个新操作?
我有一个作业,包括一个新的操作(a[n]b),给出: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[1]b=ab
- a[n]1=a
- 2[2]3=2[2-1](2[2-1]2)
=2[1](2[1]2)=222=162重复3次
- 2[2]2=2[2-1]2
=2[1]2=(22)=42重复2次
- 4[3]3=4[3-1](4[3-1]4)=4[2](4[2]4)
=4[2](4[1](4[1]4))=4重复3次
=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;
}