我知道可能有更好的计算PI的方法,但是因为我找到了Leibniz公式:
double pi(int n){
if(n==1)return 4;
return 4*pow(-1,n+1)*(1/(2*n-1))+pi(n-1);
}
Run Code Online (Sandbox Code Playgroud)
当我调用该函数时,我总是得到的只有4.000000,这意味着它仅适用于数字1; 其他每个数字都给我相同的结果.
我想知道为什么这个解决方案不能正常工作.我已经尝试在纸上写下不同数字的每一步,其背后的逻辑似乎是正确的.
编辑:除了答案中提供的内容(谢谢!)似乎(1 /(双)(2*n-1))而不是(1 /(2*n-1))将问题解决为好.
错误完全在这个术语中:
(1/(2*n-1))
Run Code Online (Sandbox Code Playgroud)
假设n碰巧3在这个迭代中:
1 / (2 * 3 - 1) == 1 / 5 == 0
Run Code Online (Sandbox Code Playgroud)
(我会让你弄清楚为什么结果是0,当你认为它应该是0.2)
提示#1:1.0和之间的区别是什么1?
提示#2: 如何通过在表达式中添加一个字符来修复表达式:.??
1有类型int,1.0有类型double
更改表达式(1./(2*n-1))