一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

C语言循环与递归实现整数幂函数

时间:2014-04-05 编辑:简简单单 来源:一聚教程网

递归在C 关于递归中讲过了一些知识,但是在写的时候我还是遇到了一些麻烦,而普通的循环却比较好想。

先来看看普通的版本:

 代码如下 复制代码
#include
double power(double n, double p);
int main(void)
{
 double n, p;
 printf("Please input the number you need to power: ");
 scanf("%lf", &n);
 printf("Please input the number of power:");
 scanf("%lf", &p);
 printf("The answer is %f", power(n, p));
 return 0;
}
double power(double n, double p)
{
 int i;
 double pow = 1.0;
 if (n == 0)
 pow = 0;
 if (p == 0)
 pow = 1;
 else if (p < 0)
 for (i = 1; i <= -p; i++)
 pow /= n;
 else if(p > 0)
 for (i = 1; i <= p; i++)
 pow *= n;
 return pow;
}

然后看看递归是怎么搞的:

 代码如下 复制代码
#include
double power(double n, double p);
int main(void)
{
 double n, p;
 printf("Please input the number you need to power: ");
 scanf("%lf", &n);
 printf("Please input the number of power:");
 scanf("%lf", &p);
 printf("The answer is %f", power(n, p));
 return 0;
}
double power(double n, double p)
{
 if (n == 0)
 return 0;
 if (p == 0)
 return 1;
 else if (p > 0)
 return n * power(n, p - 1);
 else if (p < 0)
 return power(n, p + 1) / n ;
}

递归的代码行数更少,看着挺好的,但是思考的时候就感觉略有压力了,再次之前,我没有写过递归的函数,因为不会,这次努力的想了一下,发现递归是从根部开始思考的,因为是一个个函数排下去的,所以其实是从p==0开始运行的。return 1,然后一直运算到*n截止,这样思考就能得出答案了。

热门栏目