【发布时间】:2021-09-27 14:01:34
【问题描述】:
假设我已经定义了一个函数来生成 6 个随机整数的列表,范围从 0 到 10
import random
def func():
randomlist = random.sample(range(11), 6)
return randomlist
运行:
func()
输出:
[3, 7, 10, 9, 4, 1]
现在我想定义另一个函数,它在内部调用 func() 并带有参数 n 以生成多维矩阵,其中每个元素将被 func() 生成的新创建列表替换,n 是完成替换(使矩阵中的整数总数为 6^n)——例如——
当 n=1 时,预期结果:
[3, 7, 10, 9, 4, 1]
当 n=2 时,预期结果:
[[6, 2, 9, 1, 4, 0],
[7, 8, 1, 9, 4, 1],
[1, 0, 4, 6, 3, 1],
[9, 4, 3, 8, 6, 7],
[2, 4, 3, 9, 5, 6],
[4, 7, 2, 0, 1, 8]]
当 n=3 时,预期结果:
[[[4, 7, 3, 0, 2, 8],[1, 5, 6, 5, 4, 8],[8, 9, 6, 5, 10, 4],[7, 8, 6, 6, 4, 10],[7, 8, 1, 0, 2, 3],[4, 5, 8, 5, 4, 6]],
[[1, 7, 2, 0, 2, 8],[4, 5, 8, 8, 4, 5],[9, 5, 6, 2, 1, 3],[5, 4, 1, 2, 6, 10],[7, 5, 4, 1, 1, 4],[9, 6, 5, 2, 2, 1]],
[[8, 2, 7, 10, 2, 7],[8, 9, 5, 4, 5, 5],[5, 8, 7, 7, 4, 6],[9, 5, 9, 10, 5, 4],[1, 4, 5, 6, 5, 7],[9, 8, 7, 6, 5, 1]],
[[0, 7, 4, 0, 1, 9],[4, 7, 3, 0, 2, 8],[8, 9, 6, 5, 10, 4],[8, 2, 7, 10, 2, 7],[[7, 5, 4, 1, 1, 4],[7, 8, 1, 9, 4, 1]],
[[9, 5, 3, 9, 2, 8],[8, 9, 6, 5, 10, 4],[9, 4, 3, 8, 6, 7],[3, 7, 10, 9, 4, 1],[4, 7, 3, 0, 2, 8],[9, 4, 3, 8, 6, 7]],
[[5, 3, 4, 5, 2, 10],[[7, 5, 4, 1, 1, 4],[4, 7, 3, 0, 2, 8],[4, 5, 8, 8, 4, 5],[7, 8, 1, 9, 4, 1],[8, 2, 7, 10, 2, 7]]]
我想我需要一个递归函数,但我完全不知道。有什么见解吗?非常感谢。
【问题讨论】:
-
如果你的第二个函数是
def n_dimensional_matrix(n):,你有没有想过基本情况是什么?基本情况是这个函数中的一些条件,导致它不调用自己,以避免无限递归。然后当base case条件不满足时,会进行递归调用,但需要修改n参数,使其更接近base case,再次避免无限递归。
标签: python-3.x recursion matrix multidimensional-array