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;
}