|
发表于 2017-5-4 22:24:28
|
显示全部楼层
- #因为递归的时候重复赋值i=0所以i不会变,
- #可以把i设置成全局变量或者放在函数里
- i = 0
- def gold(a,b):
- global i
- message=''
- rfa1=b-0.618*(b-a)
- rfa2=a+0.618*(b-a)
- frfa1=rfa1*rfa1*rfa1-2*rfa1+5
- frfa2=rfa2*rfa2*rfa2-2*rfa2+5
- if frfa1 < frfa2:
- a=a
- b=rfa2
- if frfa1 > frfa2:
- a=rfa1
- b=b
- while i >= 0:
- i+=1
- break
- message='第'+str(i)+'次区间缩短'+' a='+str(a)+' b='+str(b)+' Alpha1='+str(rfa1)+' Alpha2='+str(rfa2)+' F(Alpha1)='+str(frfa1)+' F(Alpha2)='+str(frfa2)
- if b-a<0.1:
- return 0
- else:
- print(message)
- return gold(a,b)
- ########################################
- def gold(a,b,i=0):
-
- message=''
- rfa1=b-0.618*(b-a)
- rfa2=a+0.618*(b-a)
- frfa1=rfa1*rfa1*rfa1-2*rfa1+5
- frfa2=rfa2*rfa2*rfa2-2*rfa2+5
- if frfa1 < frfa2:
- a=a
- b=rfa2
- if frfa1 > frfa2:
- a=rfa1
- b=b
- while i >= 0:
- i+=1
- break
- message='第'+str(i)+'次区间缩短'+' a='+str(a)+' b='+str(b)+' Alpha1='+str(rfa1)+' Alpha2='+str(rfa2)+' F(Alpha1)='+str(frfa1)+' F(Alpha2)='+str(frfa2)
- if b-a<0.1:
- return 0
- else:
- print(message)
- return gold(a,b,i)
复制代码 |
|