来来来 我们来编写一个函数来实现n^k,使用递归实现

编写一个函数实现n^k,使用递归实现
首先 我们来  理性的(夏基霸)分析一波
n的k次方那不就是n*n*n*n*n*n*....*n(共k个)
有同学会问
那么这个时候我们该怎么做?
问得好
我也不知道
我们试验一下 
猜想  各种骚操作从脑中划过
变个型 变成n*n^k-1 怎么样
我也不知道为什么要变成这个样子
反正感觉好像离求解正确不远了
附加一个递归使用的三要素
(1)条件限制
用if条件进行限制,在某一状态下进行递归调用自身
(2)条件逼近
通过一步步的递归调用,应该向if判断条件的方向逼近
以停止递归(找到递归的终点)
(3)将大化小
每次递归的都要将一个大的问题划分成子问题
思考了这么多  是时候了
naroto  一克嗖!
1、递归法
#include <stdio.h>
#include <math.h>
int  my_pow(int n,int k)
{
	if (k == 0)
	{
		return 1;
	}
	if (k == 1)
	{
		return n;
	}
	return my_pow(n , k - 1)*n;
}
int main()
{
	int n = 0;
	int k = 0;
	printf("请输入n和k\n");
	scanf("%d%d",&n,&k);
	printf("%d\n",my_pow(n,k));
return 0;
}
2、迭代法
数据量较大的时候比递归速度快
#include <stdio.h>
#include <math.h>
int my_ine(int n,int k)//迭代
{
	int q = n;
	int p = k - 1;
	if ( k == 0 )
	{
		return 1;
	}
	while ( p-- )
	{
		n = n * q;
	}
	return n;
}
int main()
{
	int n = 0;
	int k = 0;
	printf("请输入n和k\n");
	scanf("%d%d",&n,&k);
	printf("%d\n",my_ine(n,k));
return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值