别问我,为什么写这个,我可能一辈子都在开发中用不到,纯粹应付八股。
公式我不知道咋打,就网上复制了个图片。
这是什么?是一个含x的多项式,他有很多次方。假设让你写代码,x的输入项,求值。
public Double getRsByX(Integer x){
Double rs;
//todo 遍历所有的项,按照符号切分(注意优先级)
for(){
.....
//todo 计算每一项的内容
for(){
.....
}
//todo 将每一项的结果进行整合进总结果中
......
}
return rs;
}
ok,这有2个for循环吧,简单评估一下,一般2个for循环,一个循环为n次,2个时间复杂度为n^2
霍纳法则就是优化多次方多项式的计算,让他运行更快。
核心-记住:就是把【多次方】多项式,转换为【1次方】多项式。
转换后
用小学的提取公因式,一直提,直到...为1次方多项式
public Double getRsByX(Integer x){
Double rs;
//todo 按括号切分,优先级先算括号里的
for(){
//todo 先算括号中的每个,算的时候就能计算到总和中
}
return rs;
}
一个for循环,结束了,时间复杂度n
完!
参考:
霍纳法则 - 知乎