C语言第二十七弹--求n的k次方

求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 

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

你可能感兴趣的:(c语言,算法,开发语言)