2015-10-07 2 views
0

Имея немного сложностей, записывая рекурсивную функцию ... по какой-то причине она не принимает входные данные.Проблема с написанием рекурсивной функции MATLAB

function [FinalAinput, FinalMaxError] = recursiveExcelWenie(P, A, Ainput, D) 
    Aoutput = ExcelWenie_fn(P, A, D) 
    [MaxError, Ainput] = ExcelWenie2_fn(Aoutput, A) 
    if MaxError < 1 
     FinalAinput = Ainput 
     FinalMaxError = MaxError 
    else 
     NewInput = Ainput 
     [Final] = recursiveExcelWenie(P, A, NewInput, D) 
    end 
end 

Я пытаюсь иметь функцию recursiveExcelWenie взять вектор Ainput порожденную ExcelWenie2_fn и запустить себя снова с этим новым входом. Ошибка должна значительно уменьшаться, когда я просматриваю каждый шаг до тех пор, пока максимальная ошибка для всех значений ошибки из вектора MaxError не станет меньше 1, но она будет бесконечно петлями. Где я ошибся, и что я могу сделать, чтобы исправить это?

+0

Где вы присвоить ваши возвращенные переменные, '' FinalAinput' и FinalMaxError'? – beaker

+0

@beaker Я изменил свой код, чтобы отразить эту проблему. Определенно спасла меня в беде вдоль линии, но нынешнее изменение не решило проблему. Я сделал что-то не так, или я все еще не вижу больше картины? – genap

+0

Трудно сказать из кода, который вы опубликовали. Вы пробовали смотреть на «MaxError» в отладчике? – beaker

ответ

0

Вы должны исправить вашу функцию как это:

function [FinalAinput, FinalMaxError] = recursiveExcelWenie(P, A, Ainput, D) 
    Aoutput = ExcelWenie_fn(P, A, D) 
    [MaxError, Ainput] = ExcelWenie2_fn(Aoutput, A) 
    if MaxError < 1 
     FinalAinput = Ainput 
     FinalMaxError = MaxError 
    else 
     NewInput = Ainput 
     [FinalAinput, FinalMaxError]= recursiveExcelWenie(P, A, NewInput, D) 
    end 
end