作者Nessa1103 (紫藤)
看板Programming
标题[问题] 搞不懂是除法还是啥出了问题
时间Wed Mar 18 17:17:13 2015
在学习 Go Playground Programming Language 时出现一个不知道怎麽办
的 Bug。
题目:用牛顿法(
Sqrt(x)=z- [(z^2)-x]/2z )计算平方根并观察数字变化
http://go-tour-zh-tw.appspot.com/#25
程式的骨架没问题,但牛顿法这行快整死我了orz
==以下为
完整程式码,直接贴在上面网址中左上视窗就可以了==
==版本一==
package main
import (
"fmt"
)
func Sqrt(x float64) float64 {
var a, b, c float64 = x, 9.0, 0.0
for i :=0; i<10; i++ {
c=b- [ (b*b-a)/2b ] // 这行有bug无法执行
a=b
b=c
fmt.Println(a,b) // 测试a和b的变化
}
return b
}
func main() {
fmt.Println(Sqrt(2))
}
==版本二==
package main
import (
"fmt"
)
func Sqrt(x float64) float64 {
var a, b, c float64 = x, 9.0, 0.0
for i :=0; i<10; i++ {
c=b- [ (b*b-a)/2b ] // 这行有bug无法执行
a=b
b=c
fmt.Println(a,b) // 测试a和b的变化
}
return b
}
func main() {
fmt.Println(Sqrt(2))
}
==版本三==
package main
import (
"fmt"
)
func Sqrt(x float64) float64 {
var a, b, c, d, e float64 = x, 9.0, 0.0, 0.0, 0.0
for i :=0; i<10; i++ {
e=b*b-a
d=e/2b // 这行有bug无法执行
c=b- d
a=b
b=c
d=0.0
e=0.0
fmt.Println(a,b) // 测试a和b的变化
}
return b
}
func main() {
fmt.Println(Sqrt(2))
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.193.69.208
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1426670237.A.5FC.html
1F:→ LPH66: 程式语言算式的括号都是小括号 140.112.30.32 03/18 18:06
2F:→ LPH66: 中括号在程式语言里有别的意义 140.112.30.32 03/18 18:06
3F:→ LPH66: 多半是阵列相关的意思 140.112.30.32 03/18 18:06
4F:→ carelai: 对,还有除以2b应该写成/(2*b)吧 124.77.95.55 03/18 18:51
5F:→ Nessa1103: 居然是因为这样!好,我再试试 123.193.69.208 03/18 19:22
6F:→ Nessa1103: 结果真的是死在2b XDDDDDDDDDDDDDDDDDD 123.193.69.208 03/18 19:35
7F:→ Nessa1103: 不过计算出来的平方根还是怪怪的,我再 123.193.69.208 03/18 19:46
8F:→ Nessa1103: 试试看怎麽办 123.193.69.208 03/18 19:46
9F:→ carylorrk: 根据经验,完全程式新手写 go 1.34.244.41 03/19 06:22
10F:→ carylorrk: 如果直接走那个流程会卡很多地方... 1.34.244.41 03/19 06:23
11F:→ carylorrk: 感觉是给有 C 经验的人跳槽用的 1.34.244.41 03/19 06:23
12F:→ Nessa1103: 我大概算中古新手,只是C到指标就卡了 123.193.69.208 03/21 08:24