斐波那契数列与吸血鬼数字

    xiaoxiao2021-03-25  177

    写在前面

    今天在阅读《Java编程思想》第四章控制执行流程时,看到两个练习题很有趣也很难,在此分享给大家。

    斐波那契数列

    斐波那契数列是由数字1,1,2,3,5,8,13,21,34等等组成的,其中每一个数字(从第三个数字开始)都是前两个数字的和。创建一个方法,接收一个整数参数,并显示从第一个元素开始总共由参数指定的个数所构成的所有斐波那契数字。例如,如果运行java Fibonacci 5 (其中Fibonacci 是类名),那么输出就应该是1、1、2、3、5。

    提示:此题用到递归。

    package com.hjp.test; import java.util.Scanner; /** * 斐波那契数列 1 1 2 3 5 8 13 21 。。。 * @ClassName: FibonacciSequence * @author: huangjp * @date: 2017年3月9日 下午2:30:12 */ public class FibonacciSequence { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("请输入一个正整数:"); int n = s.nextInt(); for(int i=1; i<=n; i++){ System.out.print(getF(i) + ", ");; } s.close(); } //使用递归 static int getF(int n){ if(n == 1 || n == 2){ return 1; }else{ return getF(n-1)+getF(n-2); } } }/* Output: 请输入一个正整数: 8 1, 1, 2, 3, 5, 8, 13, 21, *///~

    吸血鬼数字

    题目:吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序,例如,下列数字就是吸血鬼数字: 1260 = 21 * 60; 1827 = 21 * 87; 2187 = 27 * 81; 写一个程序,找出4位数的所有吸血鬼数字。

    提示:(数字1 * 数字2)% 9 = (数字1 + 数字2) % 9。

    package com.hjp.test; /** * 吸血鬼数字:类似1260 = 21 * 60; * 1827 = 21 * 87的数字; * 定义:是指位数为偶数的数字, * 可以由一对数字相乘得到,而这对数字各包含乘积的一半位数的数字, * 其中从最初的数字中选取的数字可以任意排序, * @ClassName: VampireNum * @author: huangjp * @date: 2017年3月9日 下午3:24:26 */ public class VampireNum { public static void main(String[] args) { int[] startDigit = new int[4]; //相乘的两个数字:2 1 6 0 int[] productDigit = new int[4]; //乘积(吸血鬼数字):1 2 6 0 for(int num1 = 10 ; num1 <= 99 ; num1++){ for(int num2 = 10 ; num2 <= 99 ; num2++){ //如果num1 * num2 是吸血鬼数字,那么(num1 * num2) % 9 与 (num1 + num2) % 9 的结果相等 if((num1 + num2) % 9 != (num1 * num2) % 9){ continue; } int product = num1 * num2 ; startDigit[0] = num1 / 10; //num1的十位 startDigit[1] = num1 % 10; //num1的个位 startDigit[2] = num2 / 10; //num2的十位 startDigit[3] = num2 % 10; //num2的个位 productDigit[0] = product / 1000; //千位 productDigit[1] = (product % 1000) / 100; //百位 productDigit[2] = ((product % 1000) % 100) / 10; //十位 productDigit[3] = ((product % 1000) % 100) % 10; //个位 //判断是否4个数字都一样 int count = 0; for(int x = 0 ; x < 4; x++){ for(int y = 0 ; y < 4 ; y++){ if(productDigit[x] == startDigit[y]){ count++; productDigit[x] = -1; startDigit[y] = -2; if(count == 4){ System.out.println(num1 + "*" + num2 + ":" + product); } } } } } } } }/* Output: 15*93:1395 21*60:1260 21*87:1827 27*81:2187 30*51:1530 35*41:1435 41*35:1435 51*30:1530 60*21:1260 80*86:6880 81*27:2187 86*80:6880 87*21:1827 93*15:1395 *///~

    结尾

    关于斐波那契数列与吸血鬼数字就分享到这里啦,感兴趣的小伙伴可以加入我们的QQ群:271934368

    转载请注明原文地址: https://ju.6miu.com/read-12891.html

    最新回复(0)