我有一个包含新操作(a [n] b)的作业,给出:
2 repeated 3 times
= 2 [1](2 [1] 2)= 2 2 2 = 16 2 repeated 2 times
= 2 [1] 2 =(2 2 )= 4
4 repeated 3 times
= 4 [2](4 [1] ](4 [1](4 [1] 4)))= 我不需要解决方案,我只需要建议,以便我自己解决。
答案 0 :(得分:2)
这里所说的内容可以改写如下。
对于任何正整数a,b和n定义
a [n] b = a [n-1] ( a [n-1] ( ... a ) ) taken b times
用类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;
}
请注意,这些值会很快增长并很快超出机器整数范围。
另请注意,a[n]b
可以定义为
a [n] b = a [n-1] ( a [n-1] (b-1) ).
使用此定义可以消除上面的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;
}