原因
有可能是返回某个函数时,这个函数没有东西返回
比如这里返回一个dfs函数,这个函数本身不返回东西,所以报错
from typing import (
List,
)
import math
class Solution:
"""
@param n: An integer
@return: a list of combination
we will sort your return value in output
"""
def dfs(self, n, start, sub_ans, ans):
if start <= 1:
if len(sub_ans) > 1:
ans.append(sub_ans[:])
return
for i in range(start, int(math.sqrt(n))+1):
if n%i == 0:
sub_ans.append(i)
self.dfs(n//i, i, sub_ans, ans)
sub_ans.pop()
if start <= n:
sub_ans.append(n)
self.dfs(1, 1, sub_ans, ans)
sub_ans.pop()
def get_factors(self, n: int) -> List[List[int]]:
# write your code here
ans = []
return self.dfs(n, 2, [], ans) # 这里出错
解决
直接调用这个函数, 返回之前定义的并且作为参数参与该函数的引用传递变量。
比如这里直接调用dfs,返回ans。
from typing import (
List,
)
import math
class Solution:
"""
@param n: An integer
@return: a list of combination
we will sort your return value in output
"""
def dfs(self, n, start, sub_ans, ans):
if start <= 1:
if len(sub_ans) > 1:
ans.append(sub_ans[:])
return
for i in range(start, int(math.sqrt(n))+1):
if n%i == 0:
sub_ans.append(i)
self.dfs(n//i, i, sub_ans, ans)
sub_ans.pop()
if start <= n:
sub_ans.append(n)
self.dfs(1, 1, sub_ans, ans)
sub_ans.pop()
def get_factors(self, n: int) -> List[List[int]]:
# write your code here
ans = []
self.dfs(n, 2, [], ans) # 直接调用
return ans # 返回引用传递变量