java问题求解,请高手指教

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:18:16
小弟刚刚学习java,有几个书本上的题目不懂做啊,特向高手求教

■问题1 用递归方法求Fibonacci数列的第n项,项数n由键盘输入。
Fibonacci数列的表达式为:

f(n)=1 (n=1,2)
f(n)=f(n-1)+f(n-2) (n>2)

方法声明:static int f(int n)

■问题2 一个数如果恰好等于它的因子之和,就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,所以6就是完数。编程找出100以内的所有完数。

■问题3 求下列数列的第50项:
1,2,5,10,21,42,85,170,341,682,…

■问题4 从键盘输入一个整数,判断其是否能被3,5,7整除,并输出以下信息之一:
(1)能同时被3,5,7整除;
(2)能被其中两数(要指出哪两个)整除;
(3)能被其中一个数(要指出哪一个)整除;
(4)不能被3,5,7任一个整除。

第一题:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Fibonacci {
public static int f(int n) {
if (n<=0)
return 0;
else if (n<=2)
return 1;
else
return f(n-1)+f(n-2);
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入变量N:");
int n = Integer.parseInt(br.readLine());
int answer = f(n);
if (answer==0)
System.out.println("输入的变量不正确!");
else
System.out.println("Fibonacci数为:"+answer);
}
}
提醒你啊,不要尝试过大的n值,原因有两点:
1.int型变量范围有限。
2.java在做迭代时很容易死掉。
--------------------------------------------------------------------
第二题:
public class Perfect {
public static boolean isPerfect(int n) {
int sum = 0;