(C语言)编写一个函数实现n的k次方,使用递归实现(递归)

#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语言教学)-优快云博客

以下是部分运行结果: 

请输入该数:
3
请输入倍数:
3
3的3次方为27
请按任意键继续. . .
请输入该数:
-2
请输入倍数:
3
-2的3次方为-8
请按任意键继续. . .
请输入该数:
0
请输入倍数:
3
0的3次方为0
请按任意键继续. . .

注:该代码是本人自己所写,可能不够好,不够简便,欢迎大家指出我的不足之处。如果遇见看不懂的地方,可以在评论区打出来,进行讨论,或者联系我。上述内容全是我自己理解的,如果你有别的想法,或者认为我的理解不对,欢迎指出!!!如果可以,可以点一个免费的赞支持一下吗?谢谢各位彦祖亦菲!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值