用递归法求 n 阶勒让德多项式的值

c程序设计第7章课后习题


前言

函数递归调用是指在函数内部调用自身的过程。递归调用的意义在于可以将一个大型复杂问题层层转化为一个与原问题规模更小的问题,问题被拆解成子问题后,递归调用继续进行,直到子问题无需进一步递归就可以解决的地步为止 ²⁴。

在使用递归时,必须要找出递归的结束条件,不然会一直调用自己,进入无底洞 ¹。

举个例子,假设我们要计算一个数的阶乘。我们可以使用递归来解决这个问题。当输入的数为1时,返回1;否则,返回输入数乘以输入数减1的阶乘(即n!=n*(n-1)!)。这样就可以将大问题分解成小问题,直到最后得到答案 。


一、题目复现

 

 

二、实现步骤

1.思路分析:

1.构造计算函数值的函数(第三种取值情况中,出现了Pn-1,很明显要使用递归算法)。

2.输入n,x的值。

3.调用构造的函数求相应的值。

2.进入实操

代码如下(示例):

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int n, x;
	printf("Please enter n and x:\n");
	scanf("%d,%d", &n, &x);

	fun(n, x);
}

int fun(int n, int x)
{
	int a;
	if (n == 0)
		a = 1;
	else if (n == 1)
		a = x;
	else
		a = ((2*n - 1) * x - fun(n - 1, x) - (n - 1) * fun(n - 2, x)) / n;
	printf("%d", a);

}

运行结果如下:


 

总结

通过本次学习,相信你对函数的递归调用有了一定的认识,递归算法真的是现实生活中解决问题的很好的一种算法,建议大家多加练习,在下一次文章中,我将会以典型的汉诺塔为例,再来体现一下递归算法的强大之处,欢迎大家关注₍˄·͈༝·͈˄*₎◞ ̑̑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fashia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值