求n的k次方
方法一、递归法
思路:使用递归首先要明确开始条件和结束条件,要每次递层递归要不断接近开始结束条件,这样子才能够不会导致栈溢出问题。那么开始条件其实有两个,一个是当k等于0时,无论n为多少都是1,二是当n、k都为1时返回1。求n的k实质是,n * n * n(执行k次),那么递归条件就可以写为n * 函数(n,k-1)。
代码如下
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int setpower(int n, int k) { if (k == 0) { return 1; } else if (n == 1 && k == 1) { return 1; } else { return n * setpower(n,k - 1); } } int main() { int n = 0; int k = 0; scanf("%d %d",&n,&k); int ret = setpower(n,k); printf("%d",ret); return 0; }
方法二、非递归
思路:通过循环k次,每次乘积使用一个临时值接收最后返回临时值即可。
代码如下
int setpower(int n, int k) { int tmp = 1; while (k--) { tmp *= n; } return tmp; } int main() { int n = 0; int k = 0; scanf("%d %d",&n,&k); int ret = setpower(n,k); printf("%d",ret); return 0; }