MATLAB Answers

Sum of integers up to n using a while loop

22 views (last 30 days)
Hi, I've recently started coding as part of my uni maths course, however I am struggling very much with the learning curve.
I want to know how to sum all the positive numbers up to and including n by using a while loop.
From what I have gathered already I would use in the case of n = 10
s = 0
n = 10
while s < ((n + 1) * n / 2)
N = N + 1
s = s + N
end
disp(s)
What could I do to make this work? Any help would be greatly appreciated,

  1 Comment

Matt J
Matt J on 15 Feb 2020
Are we supposed to see why it doesn't work now?

Sign in to comment.

Accepted Answer

JESUS DAVID ARIZA ROYETH
JESUS DAVID ARIZA ROYETH on 15 Feb 2020
try it yourself with a for (see documentation)
You can be guided by this example:
s = 0;
k=1;
n = 10 ;
while k <= n
s=s+k;
k=k+1;
end
disp(s)
In the end, the idea is that with practice you can do all this code in a line like this:
n=10
s=sum(1:n)

  3 Comments

Will Murphy
Will Murphy on 15 Feb 2020
Thank you, I understand everything you've written except for line 4, I'm assuming that that is simply assigning k to the value of n. If so, can I use same notation in the future for a different task in the future except with a function of n written i.e. k <= n * 3 + 1 in some very random case. My current university course isn't very forgiving in giving specific help to less experienced coders so your assistance is greatly appreciated.
Turlough Hughes
Turlough Hughes on 15 Feb 2020
Line 4 is
while k <= n
k <= n is checking if the current value of k is less than or equal to n. If k is less than or equal to n then the condition is true and another iteration of the loop is implemented, if it is false, the loop is terminated.
Every time the loop is iterated, the value of k increases by 1 due to line 6
k = k+1;
It might help you to see the values as the loop progresses by running the following code:
s = 0;
k = 1;
n = 10 ;
while k <= n
fprintf('Iteration Number: %d\n\nValues at start of iteration \nk = %d \ns = %d\n',k,k,s)
s=s+k;
k=k+1;
fprintf('Values at end of iteration \nk = %d \ns = %d\n\n\n',k,s)
end
Will Murphy
Will Murphy on 15 Feb 2020
Ah okay, I had misinterpreted the symbols. All cleared up now, thanks for the help.

Sign in to comment.

More Answers (0)


Translated by