I can't write recursive function in Matlab (Please help me)
Mostra commenti meno recenti


I tried many times but couldn't write a recursive function in Matlab. I don't know how to do it. My friends, I would be glad if someone could help me.
12 Commenti
Rooter Boy
il 23 Ott 2020
Rik
il 23 Ott 2020
Do you explicitly want a recursive function, or do you just want to implement this algorithm?
Rooter Boy
il 23 Ott 2020
Rooter Boy
il 23 Ott 2020
Rik
il 24 Ott 2020
At the very least you will have to start your newton.m file with the line
function itr=newton(x,tol)
Then the rest of you code can calculate the number of iterations needed. It doesn't sound like you need a recursive function. The loop you have there should work.
Rooter Boy
il 24 Ott 2020
Rik
il 24 Ott 2020
I don't speak the language in this screenshot, but I don't see any indication that the only way to solve this is recursion. I see no indication that a while loop wouldn't work. You're free to implement it any way you like. What is your question?
Rooter Boy
il 24 Ott 2020
Rik
il 24 Ott 2020
Then implement it as a recursive function. What is your question?
Rooter Boy
il 24 Ott 2020
Rik
il 24 Ott 2020
Just because you aren't getting the help you were hoping for dosn't make this question not appropriate, so I removed your flag.
Risposte (1)
Rik
il 24 Ott 2020
In case you just want to know how to create a recursive function at all:
function n=I_call_myself(n)
disp(n)
if n>0
n=I_call_myself(n-1);
else
disp('n has reached 0')
end
end
8 Commenti
Rooter Boy
il 24 Ott 2020
Rik
il 24 Ott 2020
I have no clue how you should force this algorithm in a recursive function that makes any sense. This seems the perfect place for a while loop. The point is that in a recursive function you have the function call itself. At some point that recursion should stop, in your can when hata<tol.
Rooter Boy
il 24 Ott 2020
Modificato: Rooter Boy
il 24 Ott 2020
Rik
il 24 Ott 2020
You need to use while instead of if. For readability I would also suggest you include the closing end for you function.
function [itr] = newton(x,tol)
hata=tol+1;
n=1;
itr=0;
while hata>tol
x(n+1)=0.2*(4*x(n)+(32/power(x(n),4)));
hata=abs(x(n+1)-x(n));
n=n+1;
itr=itr+1;
end
disp(itr);
end
If you want to make it recursive you should probably have two outputs of your function, or use the length of x to define itr and n:
%untested code:
function [itr,x] = newton(x,tol)
hata=tol+1;
n=numel(x);
itr=n-1;
x(n+1)=0.2*(4*x(n)+(32/power(x(n),4)));
hata=abs(x(n+1)-x(n));
if hata>tol
[itr,x] = newton(x,tol);
return
end
disp(itr);
end
Rooter Boy
il 24 Ott 2020
Rik
il 24 Ott 2020
What was the error? You need to provide the full error message. If you don't, we can only give you this advice: change the code.
Rooter Boy
il 24 Ott 2020
Rik
il 24 Ott 2020
Sorry, once you receive an answer it is considered rude to delete it, so the system will not allow you to do that. People with a similar question might find the posts here helpful.
Categorie
Scopri di più su Programming in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

