C语言day05-09递归练习01

pragma mark 递归练习01

pragma mark 概念

pragma mark 代码

#include <stdio.h>
int myPow(int base,int n);
int myPow2(int base,int n);
int main()
{
#pragma mark 设计一个函数用来计算B的n次方
    /*
     b = 2
     n = 3
    
     b(0) = 1;
     int result = b(3);
     b(1) = b;          == b(0) * b;    // 0次方 * 当前的这个数
     b(2) = b * b;      == b(1) * b;    // 1次方 * 当前的这个数
     b(3) = b * b * b;  == b(2) * b;    // 2次方 * 当前的这个数
     b (n) = b(n - 1) * b;
    */
#pragma mark for循环 计算B的n次方
    /*
     2(3)
     2 * 2 * 2;
     result = 1 + 2;                // 计算1次方
     result = 2(result) * 2;        // 1次方 * 当前的这个数 = 2次方
     result = 2 * 2(result) * 2;    // 2次方 * 当前的这个数 = 3次方
     用上一次的结果 * 2
    */
    int a = 2;
    int b = 3;
    
//    int result = myPow(a,b);
    int result = myPow2(a, b);
    printf("result = %i \n",result);
    
    return 0;
}
#pragma mark 递归的使用
/**
 1.必须有一个明确的结束标志
 2.自己调用自己
 */
int myPow2(int base,int n)
{
    int result = 1; // 0次方 就是等于1
    if (n<=0) {
        return result;
    }
    else
    {
        return myPow2(base, n-1) * base;//   b (n) = b(n - 1) * b;

    }
}

int myPow(int base,int n)
{
    // 定义变量保存计算的结果
    int result = 1;
    for (int i = 0; i < n; i++) {
        printf("%i * %i \n",result,base);
        result = result * base;
    }
    return result;
}


    原文作者:liyuhong165
    原文地址: https://www.jianshu.com/p/49c0116c975e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞