תשובה לשאלה 1 שאלה 1 סעיף א': public static int ways2paya(int n){ if(n<=1) return 1; else return ways2paya(n-1)+ ways2paya(n-2); שאלה 1 סעיף ב' : public static int ways2payb(int n){ if(n<10) return ways2paya(n); else return ways2payb(n-10)+ways2paya(n); 1
שאלה 1 סעיף ג' : public static int ways2payc(int n){ int a0,a1,tmp; int sum = 0; for (int i=n; i >= 0 ; i = i - 10){ a0 = 1;a1 = 1; n=i; while(n>0){ tmp = a1; a1 = a0 + a1; a0 = tmp; n = n - 1; sum = sum + a0; return sum; public class BinaryTree { public boolean isoddnodes(){ if(root!=null) return root.isoddnodes(); return false; if(root!=null) return root.isoddnodes(true); return false; // isoddnodes //class BinaryTree תשובה לשאלה 2 שאלה 2 סעיף א': א 1 : במחלקה BinaryTree פתרון השולח ארגומנט: 2
public class BinaryNode { public boolean isoddnodes( boolean leftans=false; boolean rightans=false; if(left!=null) leftans=left.isoddnodes(); if(right!=null) rightans=right.isoddnodes() return leftans==rightans; public boolean isoddnodes(boolean parity){ if (left!= null) parity = left.isoddnodes(parity); if(right!=null) parity = right.isoddnodes(parity); return!parity; א 2 : במחלקה BinaryNode ניתן אך לא חובה// ( להוסיף ארגומנטים פתרון המקבל ארגומנט // isoddnodes // isoddnodes //class BinaryNode public class LinkedList { public int numoddtrees(){ int ans=0; if(first==null) Link curr=first; while(curr!=null){ if(((binarytree)curr.getdata()).isoddnodes()) ans++; curr=curr.getnext(); שאלה 2 סעיף ב': // numoddtrees 3
//class LinkeList 4
public class OddTreesIterator implements Iterator{ private Link current; public OddTreesIterator(LinkedList list){ current=list.first; שאלה 2 סעיף ג': public boolean hasnext(){ // hasnext שאלה 2 סעיף ד': While(current!=null&&!((BinaryTree)current.getData()).isOddNodes()) current=current.getnext(); return current!=null; LinkedList tmp=new LinkedList(); tmp.first=current; return tmp. numoddtrees()>0 פתרון נוסף: שאלה 2 סעיף ה': public Object next(){ Object ans; if(!hasnext()) throw new RuntimeException("No such element"); ans=current.getdata(); current=current.getnext(); // next //class OddTreesIterator 5
תשובה לשאלה 3 public class CriteriaMale implements Criteria{ שאלה 3 סעיף א: public List meetcriteria(list persons){ List ans=new listimp(); for(int i=0; i<persons.length();i++){ if(((person)(persons.getat(i)).getgender().equals("male")) ans.add(persons.getat(i)); // meetcriteria //class CriteriaMale שאלה 3 סעיף ב: public class AndCriteria implements Criteria{ private Criteria criteria1; private Criteria criteria2; public AndCriteria(Criteria criteria1,criteria criteria2){ this.criteria1= criteria1; this.criteria2= criteria2; //constructor public List meetcriteria(list persons){ List ans= criteria1.meetcriteria(persons); ans= criteria2. meetcriteria(ans); 6
// meetcriteria //class AndCriteria שאלה 3 סעיף ג: public class OrCriteria implements Criteria{ private Criteria criteria1; private Criteria criteria2; //constructor public List meetcriteria(list persons){ List l1= criteria1.meetcriteria(persons); List l2= criteria2.meetcriteria(persons); for(int i=0; i<l1.length();i++){ if(!l2.contains(((person)l1.getat(i))) l2.add(l1.getat(i)); return l2; // meetcriteria //class OrCriteria בהצלחה! 7