为什么我的功能没有给出正确的输出?

时间:2018-05-18 09:38:58

标签: java algorithm sorting recursion

我的函数使用递归检查数组是否已排序。 不幸的是,它为每个数组返回false

Function call : sorted(a,0,a.length) where a[] = {1,2,3}; 

boolean sorted(int[] a , int s , int n)
{
    if(s+1==n)
        return true ;
    if(a[s]<=a[s+1])
        sorted(a,s+1,n);
    return false ;
}

2 个答案:

答案 0 :(得分:4)

您忽略了对sorted的递归调用的结果。回来吧,你应该没问题:

boolean sorted(int[] a , int s , int n)
{
    if(s+1==n)
        return true ;
    if(a[s]<=a[s+1])
        return sorted(a,s+1,n); // Here!      
    return false ;
}

答案 1 :(得分:1)

您不使用递归调用的结果。也许它可能看起来像

return (a[s]<=a[s+1]) && (sorted(a,s+1,n))

或(如果Java使用复杂条件的快速评估):

const local_websocket = new WebSocket(ApiUrls.Socket(''));
this.ws = local_websocket;
this.ws.onopen = () => {
    const authentication = {
        msgType : 'Authenticate',
        data : {
            token : localStorage.getItem('authToken')
        }
    }
    local_websocket.send(JSON.stringify(authentication));
};