#include <stdio.h>
int fun(int x,int y){if(y==1){return x;}return fun(x,y-1)*x;
}
int main(){printf("请输入该数:\n");int a=0;if(scanf("%d",&a)!=1){printf("输入不合法\n");return 1;}printf("请输入倍数:\n");int b=0;if(scanf("%d",&b)!=1){printf("输入不合法\n");return 1;}printf("%d的%d次方为%d",a,b,fun(a,b));return 0;
}
今天的代码也很简单:
主要是递归的应用,清楚递归的逻辑,清楚递归是怎么运算的,过程是怎么样的呢?下面来看一看吧
调用顺序(递推阶段) 回溯顺序(回归阶段)
+------------------+ +------------------+
| fun(2, 3) | → | 返回 4 * 2 = 8 |
| 计算 fun(2, 2)*2 | +------------------+
+------------------+ ↑
+------------------+ |
| fun(2, 2) | → | 返回 2 * 2 = 4 |
| 计算 fun(2, 1)*2 | +------------------+
+------------------+ ↑
+------------------+ |
| fun(2, 1) | → | 返回 2 |
+------------------+ +------------------+
上面就是他的过程,看不懂的可以看看我之前的教学:
(C语言)递归函数教学(C语言教学)-CSDN博客
以下是部分运行结果:
请输入该数:
3
请输入倍数:
3
3的3次方为27
请按任意键继续. . .
请输入该数:
-2
请输入倍数:
3
-2的3次方为-8
请按任意键继续. . .
请输入该数:
0
请输入倍数:
3
0的3次方为0
请按任意键继续. . .
注:该代码是本人自己所写,可能不够好,不够简便,欢迎大家指出我的不足之处。如果遇见看不懂的地方,可以在评论区打出来,进行讨论,或者联系我。上述内容全是我自己理解的,如果你有别的想法,或者认为我的理解不对,欢迎指出!!!如果可以,可以点一个免费的赞支持一下吗?谢谢各位彦祖亦菲!!!!!