递归在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截止,这样思考就能得出答案了。
罚罪1+2在哪看?罚罪1+2全80集高清未删减在线观看入口地址
韩剧再婚皇后1080p迅雷磁力链接分享-韩剧再婚皇后高清完整版迅雷云盘下载1080P(4k)资源
如果我不曾见过太阳高清无删减夸克在线看-如果我不曾见过太阳蓝光高清1080p无删减资源夸克免费转存
如果我不曾见过太阳阿里云盘全集高清1080P资源链接-如果我不曾见过太阳免费阿里云盘资源下载4K高清无删减版链接
罚罪1+2全80集阿里云盘全集资源链接-罚罪1+2全集高清1080P/4K阿里云盘资源下载无删减
邵氏精品禁品未删减资源在线看-必看的50部邵氏电影无删减观看入口