小编SHA*_*HAR的帖子

在递归中使用return的位置

在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 python recursion greatest-common-divisor

3
推荐指数
1
解决办法
130
查看次数

一个函数可以在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)

c return function

1
推荐指数
1
解决办法
278
查看次数