第05天C語言(09):遞歸-練習1

一、概念
二、代碼
#include <stdio.h>

int myPow(int base,int n);
int myPow2(int base,int n);
int main()
{
#pragma 1.涉及一個函數 用來計算B的n的次方
    /*
     b = 2
     n = 3
     
     int result = b(3);
     
     b(0) = 1;
     b(1) = b;      == b(0) * b
     b(2) = b * b;   == b(1) * b
     b(3) = b * b * b; == b(2) * b
     b(n) = b(n -1) * b
     
     2(3)
     2 * 2 * 2;
     result = 1 * 2
     result = 2(result) * 2;
     result = 2 * 2(result) * 2;
     
     用上一次的結果 * 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 for循環
int myPow(int base,int n)
{
    // 1.定義變量保存計算結果
    int result = 1;
    for (int i = 0; i < n; i++) {
        printf("%i * %i\n",result,base);
        result = result * base;
    }
    return result;
}
#pragma mark 遞歸
/*
 1.必須有一個明確的結束標志
 2.自己調用自己
 */
int myPow2(int base,int n)
{
    int result = 1;
    if (n <= 0) {
        // 結束條件
        return result;
    }
    else
    {
       return  myPow2(base, n - 1) * base;
    }
}
image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容