Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 71
  • Last Modified:

sum challenge

Hi,

I saw one challenge where i need to find
1+1/2+1/3+1/4+.........+1/1000

I could not get much idea on how to proceed to find this sum. I see denominator pattern increasing 1 to 1000 where as numerator remails same as 1.

Please advise. thanks in advance
0
gudii9
Asked:
gudii9
  • 5
  • 4
  • 3
2 Solutions
 
krakatoaCommented:
Something like this perhaps:

float t =1;
float u=1;

for(int f=0;f<1000;f++){
u += 1/t++;
System.out.println(u);
}

Open in new window

0
 
ozoCommented:
You might use a for loop.
Accuracy may be better if you sum the smaller terms first, but don't worry too much about that until you have at least something working.
0
 
krakatoaCommented:
Correction to my startup code

float t =1;
float u=1;

for(int f=0;f<1000;f++){
u += 1/++t;
System.out.println(u);
}

Open in new window

0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
ozoCommented:
Now you're summing
1+1/2+1/3+1/4+.........+1/1001
It might be less confusing to use
        float u=0;
        for(int f=1;f<=1000;f++){
            u += 1.0/f;
        }
0
 
krakatoaCommented:
Yes, that looks better. It was a quick sketch, with not 100% attention to the bounds. But you're right.

----

and how about : for(int f=1;f<1001;f++){
0
 
krakatoaCommented:
gudii

what they are asking you to do here is simply to add up a sequence of numbers, but if they were just integers, it would be kind of boring . . . adding 1,2,3,4,5,6, .... 1000.

Instead, you are asked to start with 1, and add fractions of 1 to it. So the first iteration has 1 + 1/2 (which is 0.5), so the first iteration's result is 1.5. Then to that, you next add 1/3 (which is 0.3333), and then 1/4, then 1/5 etc etc etc, and finally to add 1/1000th to the penultimate result to produce a final total.

There are probably better and more elegant ways of achieving this than my code demonstrates.
0
 
gudii9Author Commented:
   for(int f=1;f<=1000;f++){

what is difference of above line with below

: for(int f=1;f<1001;f++){

Open in new window


There are probably better and more elegant ways of achieving this than my code demonstrates.

i wonder what are better ways. please advise
0
 
ozoCommented:
Those two lines are identical in effect.
So the difference would be mainly a matter of stylistic preference.

Visually, one might appear more directly connected to
1+1/2+1/3+1/4+.........+1/1000

To me, code that more closely parallels its specification can make it easier to spot errors in following that specification.

Better ways may be ways that more correctly implement the specified sum.
If having to keep track of the relationship between t and f can be a potential source of error, then one might consider that a point of inelegance.
On the other hand, avoiding implicit conversions from int to float may be a consideration for you.
0
 
gudii9Author Commented:
To me, code that more closely parallels its specification can make it easier to spot errors in following that specification.
which one does that

If having to keep track of the relationship between t and f can be a potential source of error, then one might consider that a point of inelegance.
i do not think we need any relationship between t and f right?

avoiding implicit conversions from int to float may be a consideration for you.

how to avoid this.
please advise
0
 
ozoCommented:
which one does that
If neither strikes you as any more connected to the specification than another, then this would not be a consideration for you.
To me, since the original specification mentions the number 1000,  and does not mention the number 1001, it seems more natural for the code to do the same.
Others may want to consider different stylistic preferences.


any relationship between t and f
Versions of the code that do not include f have no relationships regarding f.


how to avoid this.
Versions of the code that do include f,  maintaining it as a float and never assigning an int to it, can avoid conversions from int to float.
0
 
gudii9Author Commented:
Versions of the code that do include f,  maintaining it as a float and never assigning an int to it, can avoid conversions from int to float.

Open in new window


do we need float in denominator for f. I thought we only need int.
please advise
0
 
ozoCommented:
(int)1/(int)1000 == 0
I don't think that was what the sum challenge intended
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 5
  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now