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;
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。