Nyckelord: For-loopen, Scanner
Uppgift 12 - Summa av serie
Skriv ett program som beräknar summan av följande serie där n anges av användaren.
1 + 1/2 + 1/3 + 1/4 + 1/5 + ... 1/n
Går seriens summa mot ett ändligt gränsvärde när n går mot oändligheten (ett riktigt stort tal)?
Ledtråd
Använd Scanner för att fråga användaren om ett nytt tal. Var noggrann med att använda dig av doubles när du gör de matematiska beräkningarna!
Svar
import java.util.Scanner;
public class Uppgift12 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Ange antal termer i talföljden: ");
int number = scanner.nextInt();
double sum = 0;
for (int n = 1; n <= number; n++) {
sum = sum + 1.0 / n;
}
System.out.println("Summan av talen i serien är: " + sum);
}
}
Förklaring
Det kluriga med denna uppgift är (antagligen) att vara säker på att summeringen sum = sum + 1.0/n görs med doubles och inte ints.
Exempelvis, om vi istället skulle skrivit sum = sum + 1/n, hade uträkningen 1/n alltid resulterats i en int vilket hade gett fel resultat.
Om man skickar in ett stort värde, exempelvis 1000000, så hade värdet inte gått mot ett ändligt gränsvärde. Serien fortsätter alltså att växa i all oändlighet.