在C这个代码工作,这里我没有使用return递归调用函数.它提供了正确的输出
int gcd(int a, int b)
{
if(b == 0)
return a;
gcd(b, a % b);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我在python中编写相同的代码,则此代码返回None(我认为值应该从if语句中的return语句返回)
def gcd(a, b):
if b == 0:
return a
gcd(b, a % b)
Run Code Online (Sandbox Code Playgroud)
为了使这段代码有效,我必须添加return
def gcd(a, b):
if b == 0:
return a
return gcd(b, a % b)
Run Code Online (Sandbox Code Playgroud)
但为什么?在C和Python中执行代码之间的差异是什么?如果我在递归调用时添加额外的返回,C中的代码也可以工作,为什么不抛出错误?
一个函数可以返回其他函数,但是如何?我在C中实现二进制搜索
bool search(int value, int values[], int n)
{
// TODO: implement a searching algorithm
if(n<1)
{
return false;
}
else
binary_search(value,values,n);
}
Run Code Online (Sandbox Code Playgroud)
和二进制搜索代码是:
//binary search
bool binary_search(int value,int values[],int n)
{
int start = 0;
int end = n-1;
while(end>=start)
{
int mid = (start+end)/2;
if(values[mid]==value)
{
return true;
}
else if(values[mid]>value)
{
end = mid-1;
}
else
{
start = mid+1;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这并没有编译它说"控制可能达到无效功能的终点".如果我调用的函数返回bool那么为什么我应该在之前放一个return语句
binary_search(value,values,n);
Run Code Online (Sandbox Code Playgroud)
喜欢
return binary_search(value,values,n);
Run Code Online (Sandbox Code Playgroud)