2015-02-17 2 views
1

Код указан в javascript. Цель наивысшей функции - вернуть наибольшее число в массив g. Я хочу, чтобы это было рекурсивным и не использовало цикл while или loop. Поэтому возвращаемое значение должно быть 732. /// edit ... Я знаю, что делать сортировку, а затем поп последний элемент - лучший подход, но я просто практиковал рекурсивную функцию и слишком ленив, чтобы делать сортировку. Я понимаю quicksort и mergesort. в то время, было утро в 200 утра, поэтому я устал.простой массив рекурсивный, а не

function highest(arr, index, largest) 
 
{ 
 
    var largest = largest || arr[0]; 
 

 
    if(index < arr.length) 
 
    { 
 
     if(arr[index] > arr[0]) 
 
     { 
 
      largest = arr[index]; 
 
      return highest(arr, index + 1, largest) 
 
     } 
 
     else 
 
     { 
 
      return highest(arr,index + 1, largest) 
 
     } 
 
    } 
 
    return largest; 
 
    
 
} 
 
var g = [2,22,332,4,5,6,732,3,2,3]; 
 

 
console.log(highest(g, 0))

+1

И ваш вопрос? – SmartDev

+0

С моими кодами как отправлено, я получаю неправильный ответ. Мне нужна помощь для достижения моей цели, которая заключается в том, чтобы как-то отредактировать код, чтобы я мог получить правильный ответ. 732. –

+3

Почему вы вообще делаете такие вещи? Используйте array.sort(). Pop(), и вот оно. – UniversE

ответ

3

Обновление этой линии:

if(arr[index] > arr[0]) 

с

if(arr[index] > largest) 
+0

ур прав !!! время для меня ложиться спать ... какой долгий день. лол –

-1

рекурсии не всегда ответ на эффективность. В качестве примера я даю последовательность фибоначчи. Вам нужно создать какой-то объект запоминания, чтобы избежать повторения вычислений. Вы все еще можете использовать алгоритм quicksort и получить последний элемент в массиве.
Но лучше использовать простую форму @UniversE

1

Я не буду обсуждать, почему вы хотите это сделать, и что это можно достичь другими способами. Я предполагаю, что вы хотите сделать рекурсивный вид, поэтому я просто предлагаю более элегантный подход.

function highest(arr, largest) 
{ 

    largest = largest < arr[0] ? arr[0] : largest; 

    if (arr.length == 1) { 
    return largest; 
    } 
    arr.shift(); 
    return highest(arr,largest); 
} 
Смежные вопросы