卢卡斯数列

时间:2024-03-17 16:14:27编辑:奇事君

什么是帕多瓦数列。帕多瓦数列的规律又是什么?

帕多瓦数列是:1,1,1,2,2,3,4,5,7,9,12,16,21,28,37,49,65,86,114,151……帕多瓦数列是由帕多瓦总结而出的。它从第四项开始,每一项都是前面2项与前面3项的和。即x=(x-2)+(x-3),x为项的序数(x>4)。它和斐波拉契数列非常相似,稍有不同的是:每个数都是跳过它前面的那个数,并把再前面的两个数相加而得出的。扩展资料斐波那契数列1,1,2,3,5,8…,和卢卡斯数列1,3,4,7,11,18…,具有相同的性质:从第三项开始,每一项都等于前两项之和,我们称之为斐波那契—卢卡斯递推。凡符合斐波那契—卢卡斯递推的数列就称为斐波那契—卢卡斯数列。斐波那契数列的黄金特征1最小,也就是前后项之比接近黄金比例最快,我们称为黄金特征,黄金特征1的数列只有斐波那契数列,是独生数列。参考资料来源:百度百科——帕多瓦数列参考资料来源:百度百科——斐波那契—卢卡斯数列

用最基本的c语言编程。将1-9这九个数分为三个三位数,要求第一个3位数,正好是第二个三位数的三倍,

先给出结果:代码思路:对元素为1-9的数组进行位置交换,递归求出全排列,对每一个排列结果检查是否存在题目提出的关系,存在则输出结果。代码实现如下:#include #include #define N9uint8_t arrayRaw[N];uint16_t num1 = 0, num2 = 0, num3 = 0;uint32_t index = 0;void print();void perm(int); /*求数组的全排列 */void swap(int, int);void print(void){uint16_t i;printf("[%d]", index);for (i = 0; i < N; ++i){printf(" %d ", arrayRaw[i]);}printf("\n");}void trible_check(void){num1 = arrayRaw[0] * 100 + arrayRaw[1] * 10 + arrayRaw[2];num2 = arrayRaw[3] * 100 + arrayRaw[4] * 10 + arrayRaw[5];num3 = arrayRaw[6] * 100 + arrayRaw[7] * 10 + arrayRaw[8];if ( (num1*2 == num2) && (num1*3 == num3) ){print();printf("num1=%d\r\n", num1);printf("num2=%d\r\n", num2);printf("num3=%d\r\n", num3);}}void swap(int i, int offset){int temp;temp = arrayRaw[offset];arrayRaw[offset] = arrayRaw[i];arrayRaw[i] = temp;}void perm(int offset){uint16_t i;if (offset == N - 1) // BaseCase{index++;// print();trible_check();return;}else{for (i = offset; i < N; ++i){swap(i, offset);//交换前缀perm(offset + 1);//递归swap(i, offset);//将前缀换回来,继续做前一次排列}}}int main(){uint16_t i;for (i = 0; i < N; ++i){arrayRaw[i] = i + 1;}perm(0);printf("index=%d\r\n", index); return 0;}


上一篇:七夜的许愿星

下一篇:创建词条