Oppgavesett 8
Fra Hiofwiki
Oppgave 1
public static int rekSum(int n)
{
if(n==1) return 1;
else return n+rekSum(n-1);
}
public static int rekSum2(int n)
{
int sum = 0;
for(int i=1; i<=n; i++)
{
sum += i;
}
return sum;
}
public static int rekSum3(int n)
{
int sum = (n*(n+1)/2);
return sum;
}
public static void main(String[] args)
{
System.out.println(rekSum(3));
System.out.println(rekSum2(4));
System.out.println(rekSum(3));
}
Oppgave 2
public static int rekursivMultiplikasjon(int m, int n)
{
if(m==0 || n==0) return 0;
else return m+rekursivMultiplikasjon(m,n-1);
}
public static void main(String[] args)
{
System.out.print(rekursivMultiplikasjon(5,9));
}
Oppgave 3a)
public static int c(int n, int m) {
if (m == 0 || m == n)
return 1;
else
return c(n-1, m) + c(n-1, m-1);
}
Oppgave 3c)
public static void main(String[] args) {
String t = JOptionPane.showInputDialog("C(x,y) på formen x,y");
String a[] = t.split(",", 2);
int n = Integer.parseInt(a[0]);
int m = Integer.parseInt(a[1]);
JOptionPane.showMessageDialog(null, "C("+n+","+m+")="+c(n,m));
}
Oppgave 4a)
A(2,3) =
A(1,A(2,2))
A(1,A(1,A(2,1)))
A(1,A(1,A(1,A(2,0))))
A(1,A(1,A(1,A(1,1))))
A(1,A(1,A(1,A(0,A(1,0)))))
A(1,A(1,A(1,A(0,A(0,1)))))
A(1,A(1,A(1,A(0,2))))
A(1,A(1,A(1,3)))
A(1,A(1,A(0,A(1,2))))
A(1,A(1,A(0,A(0,A(1,1)))))
A(1,A(1,A(0,A(0,A(0,A(1,0))))))
A(1,A(1,A(0,A(0,A(0,A(0,1))))))
A(1,A(1,A(0,A(0,A(0,2)))))
A(1,A(1,A(0,A(0,3))))
A(1,A(1,A(0,4)))
A(1,A(1,5))
A(1,A(0,A(1,4)))
A(1,A(0,A(0,A(1,3))))
A(1,A(0,A(0,A(0,A(1,2)))))
A(1,A(0,A(0,A(0,A(0,A(1,1))))))
A(1,A(0,A(0,A(0,A(0,A(0,A(1,0)))))))
A(1,A(0,A(0,A(0,A(0,A(0,A(0,1)))))))
A(1,A(0,A(0,A(0,A(0,A(0,2))))))
A(1,A(0,A(0,A(0,A(0,3)))))
A(1,A(0,A(0,A(0,4))))
A(1,A(0,A(0,5)))
A(1,A(0,6))
A(1,7)
A(0,A(1,6))
A(0,A(0,A(1,5)))
A(0,A(0,A(0,A(1,4))))
A(0,A(0,A(0,A(0,A(1,3)))))
A(0,A(0,A(0,A(0,A(0,A(1,2))))))
A(0,A(0,A(0,A(0,A(0,A(0,A(1,1)))))))
A(0,A(0,A(0,A(0,A(0,A(0,A(0,A(1,0))))))))
A(0,A(0,A(0,A(0,A(0,A(0,A(0,A(0,1))))))))
A(0,A(0,A(0,A(0,A(0,A(0,A(0,2)))))))
A(0,A(0,A(0,A(0,A(0,A(0,3))))))
A(0,A(0,A(0,A(0,A(0,4)))))
A(0,A(0,A(0,A(0,5))))
A(0,A(0,A(0,6)))
A(0,A(0,7))
A(0,8)
= 9
Oppgave 4b)
public static int Ackermann(int m, int n)
{
int o = 0;
if (m==0)
o = n+1;
if (m>=1)
if (n==0)
o = Ackermann(m-1, 1);
else
o = Ackermann(m-1, Ackermann(m,n-1));
return o;
}
public static void main(String[] args)
{
System.out.println(Ackermann(2,4));
}
Oppgave 5a)
Vi får en output på "3"
Det som skjer i "strange" er at hvis parameteren
som blir gitt er = 1 så returnerer den 0,
men i alle andre tilfeller så kaller den seg selv frem
til n=1 og den returnerer da n+1
Eks: n=8 => 1+(8/2) => 1+(5/2) => 1+(3/2) --Her er n=3/2 som
er = 1 i heltallsdivisjon og den returnerer da 1+(5/2) som er = 3
Oppgave 5b
Metoden returnerer den minste verdien av de n første elementene i tabellen.
Oppgave 6
public static String snu(String s)
{
StringBuffer b = new StringBuffer(s);
int n = s.length();
for(int k=0; k<n/2; ++k)
{
int kn = n-1-k;
char temp = b.charAt(k);
b.setCharAt(k,b.charAt(kn));
b.setCharAt(kn,temp);
}
return new String(b);
}
public static void main(String[] args)
{
String snuddstreng = snu("snus");
System.out.println(snuddstreng);
}
private static void snu(StringBuffer t,int k,int n)
{
int kn = n-1-k;
if(k<n/2)
{
char temp = t.charAt(k);
t.setCharAt(k,t.charAt(kn));
t.setCharAt(kn,temp);
snu(t,k+1,n);
}
}
static String snu2(String s, int index) {
int invIndex = s.length() - index - 1;
char[] strArr = s.toCharArray();
if (index <= s.length()/2)
{
char temp = strArr[index];
strArr[index] = strArr[invIndex];
strArr[invIndex] = temp;
snu2(strArr.toString(), ++index);
}
return s;
}
public static String snu(String t)
{
StringBuffer res = new StringBuffer(t);
snu(res,0,res.length());
return new String(res);
}
public static void main(String[] args)
{
String test = snu2("kalle", 0);
System.out.println(test);
}
Oppgave 7a)
// parameteren s er a sin lengde, altså er riktig kall: largestElement(x, x.length);
public static int largestElement(int a[], int s) {
if(s == 0)
return -1;
if(s == 1 )
return a[0];
else {
int temp = largestElement(a, --s);
if (temp > a[s]) return temp;
else
return a[s];
}
}
