Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class RecursiveExponentiator {
- // Määritellään double vakio NaN
- public static final double NaN = 0d / 0d;
- public static double korotaPotenssiin(int base, int exponent) {
- /* Metodi saa parametriarvoiksi käyttäjältä kantaluvun sekä eksponentin.
- Metodi tarkistaa, että exponentti on laillinen ja kutsuu itseään eksponentin määrän verran.
- Kantaluku kertaantuu itse itsellään joka kutsulla.
- */
- // Jos eksponentti on nolla palautetaan 1
- if (exponent == 0) {
- return (double) 1; // Tyyppimuunnos doubleksi, jotta metodi hyväksyy sen
- }
- if (exponent > 0 ) {
- return (base * korotaPotenssiin(base, exponent - 1)); // Metodi kutsuu itseään...
- }
- else { // Palautetaan vakio NaN, jos yläpuolella olevat if-lauseet eivät toteudu
- return NaN;
- }
- }
- public static void main(String[] args) {
- Scanner reader = new Scanner(System.in);
- System.out.println("Hello! I am a recursive exponentiator.");
- System.out.println("Please, enter base:");
- int base = reader.nextInt();
- System.out.println("Please, enter exponent:");
- int exponent = reader.nextInt();
- // Kutsutaan metodia ja sijoitetaan se double tyyppiseen muuttujaan
- double potency = korotaPotenssiin(base, exponent);
- // Jos eksponentti oli laillinen tulostetaan tulos näytölle
- if (!Double.isNaN(potency)) {
- int value = (int) potency; // Doublen tyyppimuunnos int arvoiseksi
- System.out.println(base + " ** " + exponent + " = " + value + ".");
- }
- else { // Tulostetaan error jos metodista saatu arvo on NaN eli eksponentti oli laiton
- System.out.println("Error!");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement