我正试着了解Python,因为在过去,Python只真正用Java编写过代码。我需要一些帮助,了解一些代码,如果有人可以帮助,或指向一个好的(简单的)资源方向我请?你知道吗
我用Python的一些伪代码编写了一个二进制排序,它可以工作,但我不明白如何工作。如果下面的代码行中没有return语句,那么函数对我来说是有意义的:
return findData( data, criteria, first, mid -1 )
或者,如果我设置一个while循环,并根据需要引用的列表的一半修改start或end索引变量。你知道吗
但是对于这段代码,我不明白函数返回到哪里,或者如果我删除它们,为什么代码会失败??返回-1作为no match和'mid'来引用匹配的列表位置是有意义的,但是首先和最后传递数据、条件的return语句应该会导致语法错误,因为没有调用这样的函数?你知道吗
提前感谢任何能解释我的作品的人。我的代码在下面。你知道吗
D先生
# Binary Search
def findData( data, criteria, first, last ):
if( last < first ):
return -1
else:
mid = ( last + first ) // 2
if( criteria == data[mid] ):
return mid
elif ( criteria > data[mid] ):
print( "Currently looking at", data[mid], "in array poition", mid )
return findData( data, criteria, mid +1, last )
elif( criteria < data[mid] ):
print( "Currently looking at", data[mid], "in array poition", mid )
return findData( data, criteria, first, mid -1 )
Data = [15, 21, 29, 32, 37, 40, 42, 43, 48, 50, 60, 64, 77, 81, 90, 98]
Criteria = 98
Location = -1
Location = findData( Data, Criteria, 0, len( Data ) -1 )
if( Location < 0 ):
print( Criteria, "is not located in the array." )
else:
print( Criteria, "is located in array position ", Location )
这意味着计算表达式
-1
,并将结果作为此函数的结果返回。你知道吗这意味着计算表达式
mid + 1
,并将结果作为此函数的结果返回。你知道吗这意味着对表达式
findData( data, criteria, first, mid -1 )
求值,这也意味着用求值的参数调用函数findData
,并将结果作为该函数的结果返回。这不会返回函数。你可以这样把它分开:这完全一样。第一行就是你调用函数的第一步。你知道吗
现在,如果你调用一个函数而不使用它的返回值,它就是死代码。想象一下这个代码:
现在,如果您返回了
somefun
的结果,那么test
将是somefun
的别名。你知道吗如果要返回函数,则不能使用parens和参数应用它:
当然了。递归函数没有魔力。与所有调用函数的函数一样,它等待它返回以恢复自己的执行。调用的函数恰好是相同的事实其实并不重要。绑定参数和局部变量对于每个调用都是局部的,因此它们不会泄漏,并且每个调用都返回到上一个调用。没有魔法。每次提供相同功能的可能是不同的功能。你知道吗
这是一个递归函数,因此要使解决方案收敛到您的解决方案(如果它确实存在于列表中,否则该函数返回
-1
),它需要不断地使用当前的data
、criteria
和first
(自从第一次调用findData()
以来,这些都没有改变)及其新值last
调用自己。last
的新值在递归函数内部不断更新为mid+1
或mid-1
,直到criteria==data[mid]
,此时criteria
的索引返回为mid
,并设置为变量Location
。你知道吗相关问题 更多 >
编程相关推荐