递归在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截止,这样思考就能得出答案了。
电神魔傀2街机免费版 官方版v1.2.1
下载三国战纪2手游腾讯渠道服 安卓版v2.41.0.0
下载三国战纪2手游抖音渠道服 安卓版v2.41.0.0
下载三国战纪2折扣服 安卓版v2.41.0.0
下载叫我大掌柜小米版 安卓版v7.4.4
叫我大掌柜小米版是这款模拟经营类手游的渠道服版本,在此版本中
cooking fever正版 安卓最新版v23.0.2
cooking fever正版是一款非常好玩的模拟经营类手游
咖啡厅的生活故事 最新版v1.7
咖啡厅的生活故事是一款模拟经营游戏,玩家们在游戏中可以经营一
迅猛龙模拟器金币不减反增版 v1.1.8
迅猛龙模拟器无限金币版是一款动物模拟类游戏,玩家们将在游戏中
泽塔奥特曼升华器免广告版 v1.4
泽塔奥特曼升华器去广告版是游戏的破解版本,在该版本中为玩家去