Python函式,求數質因子,總是報錯

2021-03-09 20:45:19 字數 630 閱讀 7168

1樓:匿名使用者

1. 首先解決你的語法

抄問題i和j是區域性襲

變數,只在當前for迴圈的語句內有效,所以,你的if j==i這一句就訪問了一個失效的變數j,同樣你的遞迴呼叫一樣訪問了j,因此我建議你在外層迴圈上面加上一句i = j = 2(反正賦初值不要用0就行,因為你的遞迴呼叫k/j可能造成除0異常)

2. 演算法問題

你採用了遞迴求解,k==1作為遞迴退出條件本身是正確的,而作為引數合法性判斷則顯得有些不足,我建議應該修改為k <= 1。

另外,你的演算法會存在一個不影響正常功能的小缺陷,那就是可能重複列印質因子,比如算100的質因子,就會重複列印出兩個2和兩個5,因為先算出100的質因子2以後,接著算100/2的質因子,而50同樣存在質因子2,整個過程就變成了

kj(100)

kj(50)

kj(25)

kj(5)

因此結果是22

55關於這一點,你可以忽略不計,或者通過調整**自己進行規避希望我的回答能夠對你有所幫助

2樓:塞班狂

新版python?print都是函式了...表示我喜歡xrange,

看樣子你的程式沒錯.我以前也寫過一個求質數(素數的),原始碼丟了

python定義函式問題,Python中關於def定義函式的一些問題

2 a 少了括號,應該是 2.0 a 用def關鍵字,括號裡是引數列表 def add a,b return a b 下面呼叫 print add 1,2 python中關於def定義函式的一些問題 10 引數也屬於函式內的一個區域性變數,引數的值由函式的呼叫者傳遞。x是自定義的函式引數變數,代表函...

python函式怎麼使用另函式內的變數

例如一個函式內有一個變數i,怎麼在函式外或另一個函式中呼叫或更改它。新手學習,謝謝。不能在函式外更改某函式裡的區域性變數,因為每當你例項化那個函式的時候,那個函式裡面的區域性變數也會被重新賦值,重新定義,談何更改呢?這一個全部變數和區域性變數的問題,如果要實現樓主說的,必須使用全域性變數 類中的se...

python如何在函式中呼叫另函式返回的多個

不需要的值用 代替。例如,只要b的值 b return 你的bai意思是 函式值返回值直接放du到另一個函zhi數當參dao數吧實際上可以回變通一下,返回答的是元組,然後怎麼拿到元組中的一個最簡單的就是使用 如果 return a,b,c 想拿到b使用 fun 1 下標從0開始 你可以用3個變數去接...