以下是参数n和k的子集问题的代码.n代表学生总数,k代表我想要离开的学生数量.该代码试图给出从n个学生中拉出k个学生的可能组合的数量.
def subset(n, k):
if k == 0:
return 1
if n == k:
return 1
else:
return subset(n-1, k-1) + subset(n-1, k)
Run Code Online (Sandbox Code Playgroud)
我理解递归调用的第一部分,但是我无法理解+子集(n-1,k)部分.任何人都可以向我解释这个吗?
就像我告诉程序一样n=10,我将如何让它返回10*9*8*7*6*5....1?
我想了一会儿循环,但我觉得我搞砸了某个地方,因为它没有总结序列中的所有数字.
我目前的代码看起来像这样
def product(n):
i=n
a=n-1
while a>0:
return i * a
b=i * a
a=a-1
i=i-1
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法可以不使用递归?抱歉这个令人难以置信的初学者问题,但我正在努力教自己如何编码.你必须从某个地方开始!
谢谢!
如果我构建:
Object[][] guy = new Object[5][4];
Run Code Online (Sandbox Code Playgroud)
我的数组中的斑点有默认值吗?他们是空的吗?
有没有办法为数组中的每个点分配默认值?
这两种方法有区别吗?
例如,
from datetime import date
today = date(2012, 10, 13)
repr(today)
'datetime.date(2012, 10, 13);
today.__repr__()
'datetime.date(2012, 10, 13)'
Run Code Online (Sandbox Code Playgroud)
他们似乎做了同样的事情,但为什么有人想要在常规报告中使用后者呢?
我对O(n)在太空中的含义有了高度的了解.对于具有输入n的算法而言,这意味着某些内容,此算法分配的内存中的附加存储将与n成比例增加.
因此,如果您有一个算法将数字n作为输入,并创建一个大小为2n的数组并填充它将全部为0,则时间复杂度为O(n),空间复杂度为O(n)因为您是创建一个相对于输入大小的数组(附加存储).这种理解是否正确?
其次,O(n)的空间复杂度有多糟糕?像快速排序这样的流行排序算法具有O(n)的最差情况空间复杂度,因此对于任意长数据的排序,O(n)空间复杂度是否可能具有可怕的影响?如果是这样,对于为什么或如何有任何直觉?
sorting algorithm time-complexity space-complexity data-structures
我正在尝试定义一个带有2个参数的函数,将它们相加,如果两个参数之和以5结尾,则报告为2.如果它不以5结尾,则返回8.
有任何想法吗?
我正在考虑做一个if语句,但我很困惑我将如何检查一个数字是否以5结尾(或者是5).
感谢您的帮助,尝试自学如何编程是如此困难但又如此有益:)