递归在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截止,这样思考就能得出答案了。
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级