Advertisement
CarlBjorklund

Lektion 5: Rekursion, del 2

Oct 6th, 2017
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ada 1.19 KB | None | 0 0
  1. with Ada.Text_IO; use Ada.Text_IO;
  2. with Ada.Float_Text_IO; use Ada.Float_Text_IO;
  3.  
  4. --Uppgift: Skriv en funktion som beräknar X upphöjt till N
  5. --Lös med rekursion
  6.  
  7. --Vill bara tillägga att denna lösningen inte är perfekt
  8. --exponenten fungerar endast som heltal och avrundar alltid till en decimal.
  9. --de som är bättre än mig på ada kanske har någon lösning på det :)
  10.  
  11. procedure Exponenter is
  12.    
  13.    function The_Power_Of(X,N: in float) return float is
  14.    begin
  15.       if N = 0.0 then
  16.      return 1.0;
  17.       elsif N = 1.0 then
  18.      return X;
  19.       end if;
  20.       --dessa två är de "enkla fallen" som alltid stämmer oavsett vilka siffror som matas in.
  21.      
  22.      
  23.       if N < 0.0 then
  24.      
  25.      return 1.0/The_Power_Of(X,-N);
  26.      --I de fallen exponenten (N) är negativ måste vi använda en annan formel
  27.      --annars blir rekursionen oändlig
  28.       end if;
  29.         return  X*The_Power_Of(X,(N-1.0));
  30.         --I de fallen N är positivt hamnar vi här
  31.       end The_Power_Of;
  32.    X,N: float;
  33. begin
  34.    
  35.    Put("Mata in basen X: ");
  36.    Get(X);
  37.    Put("Mata in exponenten N: ");
  38.    Get(N);
  39.    Put("X upphöjt till N är: ");
  40.    Put(The_Power_Of(X,N),Fore=>0,Aft=>0,Exp=>0);
  41. end Exponenter;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement