递归使用三要素
(1)条件限制
用if条件进行限制,在某一状态下进行递归调用自身
(2)条件逼近
通过一步步的递归调用,应该向if判断条件的方向逼近
以停止递归(找到递归的重点)
(3)将大化小
每次递归的都要将一个大的问题划分成子问题
具体思路
定义函数
首先呢,我们定义一个函数,就叫 my_pow吧,为了避免与库函数中的 pow冲突(难不成弄个真假美猴王?)
参数呢,n表示底数,比如2^3,2的三次方,n就是2,k就是3.结果是8
条件限制
递归是有条件限制的(总不能无限制递归下去吧,出来混,迟早要还的)
由于是k个n相乘,我们每次递归之后将 k-1.
那么递归部分知道怎么写了吧~
条件逼近
每次k-1,就是为了条件逼近
每次循环循环终于要完了,卡到if的界限~
最终检查
可是,我们还是少了一句话。否则很可能前功尽弃!!!!
函数是如何进行递归的呢??让我们看看图
完整代码
#include<stdio.h>
//n^k
int my_pow(int n,int k)
{
if(k>0)
{
return my_pow(n,k-1)*n;
}
return 1;
}
int main(void)
{
int ret = my_pow(4,4);
printf("%d\n",ret);
return 0;
}
PS:
最近状态良好,需要保持,坚持写博客~
还有读书~~
俗话说的好: 三天不读书,智商输给猪