社区讨论

萌新求助,关于「收敛」

学术版参与者 4已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@lo95higd
此快照首次捕获于
2023/10/28 05:53
2 年前
此快照最后确认于
2023/10/28 05:53
2 年前
查看原帖
数列 aa 满足 a1=1.51,ai+1=14i×ai2i1(i1)a_{1}=\sqrt{1.5}-1, a_{i+1}=\frac{1-4 i \times a_{i}}{2 i-1}(i \geq 1),求 ana_{n}。输出保留 88 位小数。
样例输入:1010
样例输出:0.017482150.01748215
题解:直接推会有精度问题,倒推即可。
CPP
#include<iostream>
#include<cstdio>

using namespace std;

const int N = 1e7 + 10;

int n;
double a[N];

int main(){
	
	scanf("%d", &n);
	
	for(int i = 114514; i >= 1; i--){
		a[i] = (1-(2*i-1)*a[i+1])/(4*i);
	}
	
	printf("%.8f\n", a[n]);
	
	return 0;
}
但是将 999999999999 换成 114514114514,或任意一个较大的数,都是正确的!请问这是为什么

回复

7 条回复,欢迎继续交流。

正在加载回复...