Function to compute product of all numbers from 1 to n

Hi,
I'm trying to solve the following problem: "Write a Matlab function that recursively computes the product of the integers from 1 to n". My code isnt' working though. This is what I got so far:
function r = integerproduct (n)
b = 1;
vector = 1:n;
for i = 1:length(vector)
while i <= 5
q = vector(i)*vector(i+b)
end
b=b+1;
r = q*vector(i+b)
end
end
I just used n = 5 as an example. If I understand the exercise correctly, the function is supposed to compute the following: 1*2*3*4*5 = 120.
It takes forever to run the code which seems a bit dodgy, surely it's not supposed to take that long? Does anyone have any hints as to what I should change so that 1) the function actually does what it's supposed to do and 2) the code runs as efficiently as possible?
Many thanks,
Dobs

 Akzeptierte Antwort

integerproduct(5)
ans = 120
function r = integerproduct (n)
if n==1, r=1; return; end
r=n*integerproduct(n-1);
end

3 Kommentare

Oh yes, it's working now! Thank you! I don't really understand what the function does though. So n == 1 checks if n is equal to 1? And how is the last line able to compute the product? The function is already used inside the function itself?
Matt J
Matt J am 22 Nov. 2021
Bearbeitet: Matt J am 22 Nov. 2021
The function is already used inside the function itself?
Yes, that's what recursion is.
Oh, I thought it meant that the function keeps going until n is reached (whatever n is). Thank you for clarifying!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2021b

Gefragt:

am 22 Nov. 2021

Kommentiert:

am 22 Nov. 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by