任务描述
有一种细菌,它分裂一次得到2^121个细菌,分裂两次后得到2^222个,分裂三次得到2^323个,分裂四次得到2^424个。因受到核污染,发生了变异,分裂一次可以得到x^1x1个,分裂两次得到x^2x2个…(xx受温度、氧气等影响)。根据给出的xx和nn,编写程序计算分裂nn次可以得到多少个细菌。
实现思路
第一次分裂x^1x1个,第二次分裂x^2x2个,第三个分裂x^3x3个…第nn次分裂x^nxn次。即求xx的nn次幂。
由上述可知,递归边界为 y = 0
和 y = 1
,递归公式为 x * calc_pow(x, y - 1)
。calc_pow
为递归函数。
函数定义
int calc_pow (int x, int n);
注意: 函数calc_pow
应返回xx的nn次幂的值。建议用递归实现。
示例1
参数
x = 2
y = 3
返回
8
#include <stdio.h>
#include <math.h>
int calc_pow(int x, int y) {
/*********** begin *************/
if(y==1) return x;
else if(y==0) return 1;
else return x*calc_pow(x,y-1); /*递归*/
/************ end **************/
}
int main() {
int x = 2;
int y = 3;
int s = calc_pow(x, y);
printf("%d\n", s);
return 0;
}