递归实现n的k次方(C语言)

这篇博客介绍了如何使用C语言编写一个递归函数来计算整数n的k次方。函数test通过递归方式,在k等于1时返回n,否则返回n乘以test(n, k-1)的结果。在main函数中,读取用户输入的n和k值,然后调用test函数并打印结果。

编写一个函数实现n^ k

通过函数递归可以直接求出。

#include<stdiio.h>
int test(int n, int k)
{
    if (k == 1)
	{
		return n;
	}
	else if (k > 1)
	{
		return n*test(n, k - 1);
	}
}

int main()
{
	int n = 0;
	int k = 0;
	scanf("%d%d", &n, &k);
	int ret = test(n, k);
	printf("%d\n", ret);
	return 0;
}

### 使用递归实现 n 的 k 次方函数 递归是一种通过将问题分解为更小的子问题来解决复杂问题的方法。对于计算 n 的 k 次方,可以使用递归的思想,将问题简化为更小的幂运算。 #### C语言实现 以下是用C语言实现递归解 n 的 k 次方的代码: ```c #include <stdio.h> double myPow(int n, int k) { if (k == 0) { return 1.0; } else if (k > 0) { return n * myPow(n, k - 1); } else { return 1.0 / myPow(n, -k); } } int main() { int n, k; printf("请输入底数n:"); scanf("%d", &n); printf("请输入指数k:"); scanf("%d", &k); double result = myPow(n, k); printf("%d 的 %d 次方结果为:%lf\n", n, k, result); return 0; } ``` 上述代码中,`myPow` 函数实现递归计算 n 的 k 次方[^1]。当 `k` 等于 0 时,返回 1.0;当 `k` 大于 0 时,递归调用自身并乘以 `n`;当 `k` 小于 0 时,递归计算 `n` 的 `-k` 次方,并取倒数。 #### Python 实现 以下是用 Python 实现递归解 n 的 k 次方的代码: ```python def power(n, k): if k == 0: return 1.0 elif k > 0: return n * power(n, k - 1) else: return 1.0 / power(n, -k) # 测试代码 n = int(input("请输入底数n:")) k = int(input("请输入指数k:")) result = power(n, k) print(f"{n} 的 {k} 次方结果为:{result}") ``` 在 Python 中,递归逻辑与 C 语言类似,但语法更加简洁[^4]。当 `k` 等于 0 时,返回 1.0;当 `k` 大于 0 时,递归调用自身并乘以 `n`;当 `k` 小于 0 时,递归计算 `n` 的 `-k` 次方,并取倒数。 #### JavaScript 实现 以下是用 JavaScript 实现递归解 n 的 k 次方的代码: ```javascript function pow(x, n) { if (n == 0) { return 1.0; } else if (n > 0) { return x * pow(x, n - 1); } else { return 1.0 / pow(x, -n); } } // 测试代码 let n = parseInt(prompt("请输入底数n:")); let k = parseInt(prompt("请输入指数k:")); let result = pow(n, k); console.log(`${n} 的 ${k} 次方结果为:${result}`); ``` 在 JavaScript 中,递归逻辑同样遵循类似的规则[^3]。当 `n` 等于 0 时,返回 1.0;当 `n` 大于 0 时,递归调用自身并乘以 `x`;当 `n` 小于 0 时,递归计算 `x` 的 `-n` 次方,并取倒数。 --- ### 注意事项 递归方法虽然简洁优雅,但在处理大数值时可能会导致栈溢出或性能问题。因此,在实际应用中,需根据具体需选择合适的实现方式。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值