0
我讓自己做了很多。這個例子很簡單,但實際上,有很多複雜的分配來更新數據結構和條件,在這種情況下第二次遞歸沒有被調用。遞歸函數中的泛型參數:可怕的習慣?
我正在處理網格數據。點,邊和麪被存儲在單獨的字典中,並且「指針」(字典鍵)被大量使用。
import itertools
class Demo(object):
def __init__(self):
self.a = {}
self.b = {}
self.keygen = itertools.count()
def add_to_b(self, val):
new_key = next(self.keygen)
self.b[new_key] = val
return new_key
def recur_method(self, arg, argisval=True):
a_key = next(self.keygen)
if argisval is True:
# arg is a value
b_key = self.add_to_b(arg)
self.a[a_key] = b_key
self.recur_method(b_key, argisval=False)
else:
# arg is a key
self.a[a_key] = arg
demo = Demo()
demo.recur_method(2.2)
有沒有更好的方法?把我的任務代碼分成七種不同的方法?無論如何,我是否應該擔心這一點?
不知道你的問題是什麼,我沒有看到'* args'可言。 – jdotjdot
以一個簡短的示例縮寫爲單個「arg」。這個問題可能會被更好地表述爲「遞歸函數中的通用參數」。馬辛的建議好得多,似乎很明顯,但我夾帶並可以原諒自己一些錯過的猜測。 – Shay
我看不到問題。特別是,我不明白你爲什麼使用遞歸方法;你可以做'arg = b_key'而不是遞歸調用,然後將'else'部分放下一個縮進級別。 –