f(n)=f(n-1)+f(n-2)
f(0)=0
F(1)=f(2)=1当n分别等于1,2,3,4时,f(n)的值分别为1,1,2,3
写一个函数。传入N的值,返回f(n)值。2.用java写一个堆践程序。这两个不会做了。

解决方案 »

  1.   

    第一个用switch(n){
        case1:..
        case2:..
    }
    第二个
        public class ArrayStack { 
    Object[] m_elements; 
    int m_size; public ArrayStack(int len) { 
    m_elements = new Object[len]; 
    m_size = 0; 
    } public ArrayStack() { 
    this(50); 
    } // insert onto stack 
    public void push(Object element) { 
    m_elements[m_size] = element; 
    m_size++; 
    } // return and remove the top element 
    public Object pop() { 
    if (!this.isEmpty()) { 
    Object obj = m_elements[m_size - 1]; 
    m_elements[m_size - 1] = null; 
    m_size--; return obj; 
    } else { 
    return null; 

    } // return the top element 
    public Object top() { 
    if (!this.isEmpty()) { 
    return m_elements[m_size - 1]; 
    } else { 
    return null; 

    } // return 1 --> is empty 
    // return 0 --> is not empty 
    public boolean isEmpty() { 
    return this.size() == 0; 
    } public int size() { 
    return m_size; 

    } 使用链表实现(单链表) : 
    public class Stacklist { 
    Node m_header; int m_size; public ListStack() { 
    m_header = null; 
    m_size = 0; 
    } public void push(Object value) { m_header = new Node(value, m_header); } public Object pop() { 
    if (!this.isEmpty()) { 
    throw new RuntimeException("Stack underflow"); 
    } Object obj = m_header.element; m_header = m_header.next; return obj; 
    } // return reference to most recently added elemenet 
    public Object peek() { 
    if (!this.isEmpty()) { 
    throw new RuntimeException("Stack underflow"); 
    } return m_header.element; 
    } public boolean isEmpty() { 
    return this.size() == 0; 
    } //return the number of the queue's elements; 
    public int size() { 
    return m_size; 


    链表的需要用到一个结点类 Node.java 代码如下 
    public class Node { 
    Object element; 
    Node next; public Node(Object theElement) { 
    this(theElement, null); 
    } public Node(Object theElement, Node n) { 
    element = theElement; 
    next = n; 
    } public Object getElement() { 
    return element; 
    } public void setElement(Object element) { 
    this.element = element; 
    } public Node getNext() { 
    return next; 
    } public void setNext(Node next) { 
    this.next = next; 

    }
      

  2.   

    大哥,第一个是斐波那契数列,好象跟java没什么关系,主要是数学问题吧,在说你要是的函数....
    public class Fibonacci {   
        public static long fib(int n) {   
            if (n <= 1) return n;   
            else return fib(n-1) + fib(n-2);   
        }   
      
        public static void main(String[] args) {   
            int N = Integer.parseInt(args[0]);   
            for (int i = 1; i <= N; i++)   
                System.out.println(i + ": " + fib(i));   
        }   
      
    }  
    随便你怎么改
    第二个实现堆践?堆栈?
    数组实现的堆栈:ArrayStack.java 
    public class ArrayStack { 
    Object[] m_elements; 
    int m_size; public ArrayStack(int len) { 
    m_elements = new Object[len]; 
    m_size = 0; 
    } public ArrayStack() { 
    this(50); 
    } // insert onto stack 
    public void push(Object element) { 
    m_elements[m_size] = element; 
    m_size++; 
    } // return and remove the top element 
    public Object pop() { 
    if (!this.isEmpty()) { 
    Object obj = m_elements[m_size - 1]; 
    m_elements[m_size - 1] = null; 
    m_size--; return obj; 
    } else { 
    return null; 

    } // return the top element 
    public Object top() { 
    if (!this.isEmpty()) { 
    return m_elements[m_size - 1]; 
    } else { 
    return null; 

    } // return 1 --> is empty 
    // return 0 --> is not empty 
    public boolean isEmpty() { 
    return this.size() == 0; 
    } public int size() { 
    return m_size; 


    看看能不能用...
      

  3.   

    第一题的参考
      public static void main(String[] args) throws IOException {
        for (int n = 1; n <= 10; n++) {
          System.out.println(f(n));
        }
      }  public static int f(int n) {
        if (n <= 0) {
          return 0;
        } else if (n == 1 || n == 2) {
          return 1;
        }
        return f(n - 1) + f(n - 2);
      }第二题自己想吧,Java自己就有Stack 你可以用ArrayList 来模拟!