c 语言 用函数递归来实现求 k 的 n 次方

本文深入探讨了使用递归算法求解k的n次幂的实现方式,详细解释了递归函数的工作原理,通过自己调用自己来完成幂运算,提供了一段完整的C语言代码示例。

       如果求取k的n次方,既可以用普通的方法实现,也可以用函数的递归来实现。

       函数的递归即是自己调用自己的函数应用形式,即在main函数下定义一个函数,然后在这个函数内自己为了实现某个目的,函数自身反复调用自己来完成这个目标的形式叫做函数递归。

       因此,这个算法的思路即是自己调用自己,每次实现调用函数时 *k,然后根据 n 的变化最终完成所有的k相乘,实现目标的求取。

#include<stdio.h>
int del(int n, int k,int ant)
{
	if (n != 1)
	{
		return del(n - 1, k,ant*k);
	}
	else
		return ant*k;
}
int main()
{
	int num = 0;
	int n = 0;
	int k = 0;
	int tmp = 1;
	scanf_s("%d%d", &n,&k);
	num = del(k, n,tmp);
	printf("%d", num);
	system("pause");
	return 0;
}

 

在C++中,实现x的n次方函数递归和迭代两种常见方法。 ### 递归方法 递归方法是通过函数自身调用实现的,当`n`为1时直接返回`x`,否则返回`x`乘以`x`的`n - 1`次方。以下是示例代码: ```cpp #include <iostream> using namespace std; int recall(int x, int n) { if (n == 1) return x; else return x * recall(x, n - 1); } int main() { int x = 3, n = 3; cout << "3^3=" << recall(x, n); cout << endl; return 0; } ``` 上述代码中,`recall`函数通过递归调用自身来计算`x`的`n`次方。当`n`等于1时,递归终止,直接返回`x`;否则,返回`x`乘以`recall(x, n - 1)`的结果[^1]。 ### 迭代方法 迭代方法使用循环来实现,通过不断将`x`相乘`n`次得到结果。以下是示例代码: ```cpp #include <iostream> using namespace std; double power(double x, int n) { double val = 1.0; while(n--) { val *= x; } return val; } int main(int argc, char const *argv[]) { double x; int n; cout << "输入两个数x、n,输出x的n次方" << endl; cin >> x; cin >> n; cout << "x的n次方是:" << power(x, n) << endl; system("pause"); return 0; } ``` 上述代码中,`power`函数使用`while`循环将`x`相乘`n`次,最终得到`x`的`n`次方。在`main`函数中,用户输入`x`和`n`的值,调用`power`函数计算结果并输出[^2]。 ### 另一种迭代方法 这种迭代方法同样使用`while`循环,当`n`大于0时,将结果乘以`x`并将`n`减1。以下是示例代码: ```cpp #include <iostream> using namespace std; double Calculate(double x, int n) { double result = 1.0; while(n > 0) { result *= x; n--; } return result; } int main() { int x, n; cout << "请输入x的值和n的值:" << endl; cin >> x >> n; cout << "x的n次方=" << Calculate(x, n) << endl; return 0; } ``` 上述代码中,`Calculate`函数使用`while`循环实现迭代计算`x`的`n`次方。在`main`函数中,用户输入`x`和`n`的值,调用`Calculate`函数计算结果并输出[^3]。 ### 另一种递归方法 此递归方法在`n`小于2时返回`x`,否则返回`x`乘以`f(x, n - 1)`。以下是示例代码: ```cpp #include <bits/stdc++.h> using namespace std; int f(int x, int n) { if(n < 2) return x; return x * f(x, n - 1); } int main() { double x, n; cout << "输入原数(整数):"; cin >> x; cout << "输入x的几次方:"; cin >> n; cout << x << "的" << n << "次方是" << f(x, n); return 0; } ``` 上述代码中,`f`函数通过递归调用自身计算`x`的`n`次方。在`main`函数中,用户输入`x`和`n`的值,调用`f`函数计算结果并输出[^4]。 ### 又一种迭代方法 这种迭代方法同样使用`while`循环,通过不断将`x`相乘`n`次得到结果。以下是示例代码: ```cpp #include <iostream> using namespace std; double power(double x, int n) { double sum = 1.0; while(n--) { sum *= x; } return sum; } int main() { double x; int n; cout << "please enter x:"; cin >> x; cout << "please enter n:"; cin >> n; cout << power(x, n) << endl; return 0; } ``` 上述代码中,`power`函数使用`while`循环实现迭代计算`x`的`n`次方。在`main`函数中,用户输入`x`和`n`的值,调用`power`函数计算结果并输出[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值