1,1,2,3,5,8.....使用java代码输出第N个数字的值是多少
这里可以直接使用递归来实现该需求:
需求:
输入第n个数字,就依此规律输出对应的值
1、首先要确保输出的是整数,这里方法有很多,可以用正则,也可以用sc.next()
等 在这里我使用的是hasNextInt();
代码如下:
import java.util.Scanner; /** * 使用递归实现1,1,2,3,5,8..... * @ClassName: Math2 * @Description: TODO * @author: 安生 优秀的判断力来自经验,但经验来自于错误的判断。 * @date: 2019年12月17日 下午7:11:52 */ public class Math2 { static Scanner sc = new Scanner(System.in); //确保输入的是整数: public static int getInt() { System.out.println("请输入整数:"); while(!sc.hasNextInt()) { System.out.println("输入的不是整数,请重新输入:"); sc.next(); } int num = sc.nextInt(); return num; } public static void main(String[] args) { System.out.println(getInt()); } }
效果如下:
2、递归的第一种方法:
//这里使用long 类型 因为int类型可能会出现脏数据 public static long test(int n) { if(n==0) { System.out.println("结束输出"); return 0; } if(n==1 || n==2) { return 1; } return test(n-2)+test(n-1); } //1,1,2,3,5,8,13,21 public static void main(String[] args) { long result = 0; do { result = test(getInt()); System.out.println(result); }while(result!=0); }
测试第一种方法的结果如下:
第二种递归方法:
public static long test2(int n) { long a = 1; long b = 1; if(n==0) { System.out.println("输出结束!"); return 0; }else if(n==1 || n==2) { return 1; }else { for(int i = 0; i<n-2; i++) { long tem = 0; tem = a; a += b; b = tem; } return a; } } //1,1,2,3,5,8,13,21 public static void main(String[] args) { long result = 0; do { result = test2(getInt()); System.out.println(result); }while(result!=0); }
测试结果:
本文作者:AxeBurner
本文链接:https://www.cnblogs.com/bichen-01/p/12056586.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步