参考了网上的思路,写了个Java版的:
public class Fibonacci {
final static int[] A={1,1,1,0};
public static void main(String[] args) {
int n=7;
for(int i=0;i<=n;i++){
int f=fibonacci(i);
System.out.print(f+" ");
}
}
static int fibonacci(int n){
if(n==0)return 0;
if(n==1)return 1;
if(n>1){
int[] re=power(n-1);
return re[0];//矩阵乘积的第00项为所求
}
return -1;
}
//a^n=a^(n/2)*a^(n/2) or a^n=a^(n/2)*a^(n/2)*a
static int[] power(int n){
int[] a=new int[4];
if(n==1){
a=A;
}
else if(n%2==0){
a=matixMultiply(power(n/2),power(n/2));
}else if(n%2==1){
int[] temp=matixMultiply(power(n/2),power(n/2));
a=matixMultiply(A,temp);
}
return a;
}
//矩阵乘法
// return A*B
static int[] matixMultiply(int[] a,int [] b){
int[] re=new int[4];
re[0]=a[0]*b[0]+a[1]*b[2];
re[1]=a[0]*b[1]+a[1]*b[3];
re[2]=a[2]*b[0]+a[3]*b[2];
re[3]=a[2]*b[1]+a[3]*b[3];
return re;
}
}
分享到:
相关推荐
斐波那契数列的第n项(青蛙跳台阶)10.二进制中1的个数、11.数值的整数次方、12.打印1到最大的n位数13. O(1)时间删除链表节点.14.使数组中的奇数位于偶数前面15.找链表中倒数第K个节点.16.输出反转后的链表17.合并两个...
45. **Fibonacci数列**:递归或迭代计算Fibonacci数列的前40项。 46. **密码加密**:根据字符映射规则实现加密算法。 47. **百元买百鸡问题**:典型的整数线性规划问题,通过穷举所有可能的组合找出解。 48. **...
斐波那契数列定义为:第一项与第二项均为1,后续每一项都是前两项之和(如1, 1, 2, 3, 5, 8, 13, 21...)。 ```java int first = 1, second = 1; for (int i = 0; i ; i++) { System.out.print(first + " "); int...
- **描述**:编写一个程序,计算斐波那契数列的前N项。 - **实现思路**: - 使用循环结构(如`for`循环)来依次计算每一项的值。 - 设置两个变量分别存储当前项和前一项的值,通过这两个变量计算下一项的值。 - ...
斐波那契数列求值 - **知识点**: 斐波那契数列的前20项。 - **实现方法**: - 使用循环或递归来计算斐波那契数列的值。 #### 21. 阶乘求和 - **知识点**: 阶乘和是指1! + 2! + … + n! 的和。 - **实现方法**: - ...
1. **斐波那契数列**:程序1中的兔子问题涉及到斐波那契数列,它是一种基于递归关系的数列,每个数字是前两个数字的和。 2. **素数判断**:程序2中,通过检查一个数能否被2到其平方根之间的所有数整除来判断是否为...
- **题目解析**:生成斐波那契数列的前7项,斐波那契数列定义为每一项都是前两项的和,初始两项为1。 - **实现思路**:使用循环结构,初始化前两项为1,然后在循环中不断更新当前项为前两项之和,直至生成所需项数。...
12、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值 1 1 2 3 5 8 13 21 34 规律:一个数等于前两个数之和 //计算斐波那契数列(Fibonacci)的第n个值 public class Fibonacci{ public static void main...
- **题目描述**:编写一个程序,输出斐波那契数列的前N项。 - **解题思路**: - 使用循环结构(如for循环)来生成斐波那契数列。 - 设置两个变量存储当前项和前一项的值,并在每次循环中更新这两个变量的值。 - ...
15. **斐波那契数列求和**:计算斐波那契数列的前20项之和。 16. **递归求阶乘**:使用递归函数计算阶乘。 17. **年龄递推问题**:递归计算每个人的实际年龄。 18. **数字位数判断与倒序输出**:数字字符串处理,...
9. 斐波那契数列的应用:斐波那契数列在计算机科学和算法中有广泛应用,如9.1输出斐波那契数列的第n项,9.2青蛙跳台阶问题等。 10. 二进制中1的个数:主要考察位运算的技巧,以及如何在不使用循环的情况下计算一个...
- 斐波那契数列是由0和1开始,后面的每一项都是前面两项的和。 - 可以使用循环(如 for 循环)来实现。 - 使用变量存储当前项和前一项的值。 ### 2. 质数判断 - **题目**:编写一个程序,找出101到200之间的...
20. **斐波那契数列求和**:计算前20项并求和,可以使用循环或递归。 21. **阶乘和**:计算1到20的阶乘和。 22. **递归求阶乘**:使用递归函数计算阶乘。 23. **年龄推理**:根据条件进行链式推理。 24. **数字位数...
第九题 斐波那契数列的第n项(青蛙跳台阶) 测试9 第十题 二进制中1的个数 测试10 第十一题 数值的整数次方 测试11 第十二题 打印1到最大的n晚数 测试12 第十三题 O(1)时间删除链表节点 测试13 第十四题 使数据库中...
- 使用循环结构(如`for`或`while`循环)来计算斐波那契数列。 #### 题目2:判断素数 - **知识点**: - 素数的定义及判断方法。 - 判断一个数是否为素数的算法。 - 如何使用循环(如`for`循环)进行连续的除法...
1. **斐波那契数列**:生成斐波那契数列直到特定值。 2. **素数判断**:判断在101到200之间的数是否为素数。 3. **水仙花数**:找出所有三位数中的水仙花数(一个三位数,其各位数字立方和等于该数本身)。 4. **质...
- **代码实现**:展示如何使用矩阵快速幂算法高效计算斐波那契数列。 ### 17. 把字符串转换成整数 - **状态机思想**:可以将这个过程看作是一个有限状态机的过程,定义不同的状态来处理字符串中的各种符号和数字。...
- **实现思路**:通过循环或递归的方式计算斐波那契数列中的第n个数字。 #### 练习题2:质数判断 - **知识点**: - 质数的概念:只能被1和自身整除的大于1的自然数。 - 开平方根技巧:减少不必要的检查次数。 - ...
9. 斐波那契数列的第n项:需要实现动态规划,或使用递归和备忘录技巧来优化重复计算。 10. 二进制中1的个数:这是一道位运算相关的题目,需要利用位与运算来计算一个整数的二进制表示中有多少个1。 11. 数值的整数...
使用Python3用pythonic的方式实现《剑指Offer 第二版》中的题目。拒绝直接“翻译”java等实现。代码有些并非原创,搬运了一些LeetCode中大神的优秀解法,比如:如何用一行代码实现顺时针打印矩阵。 基本所有题都包含...