“常用公式”在线计算,“设计手册”在线查询
分析:在很多C 语言教科书中讲到递归函数的时候,都会用Fibonacci 作为例子。因此很多程序员对这道题的递归解法非常熟悉,但....呵呵,你知道的。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 支持支持 反对反对

共 1 个关于本帖的回复 最后回复于 2013-8-16 13:04

沙发
王萍 新来的 发表于 2013-8-16 13:04:11 | 只看该作者
研发埠培训中心
This isthe traditional problem of application of mathematics...let A={1 1}{1 0}f(n) = A^(n-1)[0,0]this gives a O(log n) solution.int f(int n) {  int A[4] = {1,1,1,0};  int result[4];  power(A, n, result);  return result[0];}voidmultiply(int[] A, int[] B, int _r) {  _r[0] = A[0]*B[0] + A[1]*B[2];  _r[1] = A[0]*B[1] + A[1]*B[3];  _r[2] = A[2]*B[0] + A[3]*B[2];  _r[3] = A[2]*B[1] + A[3]*B[3];}voidpower(int[] A, int n, int _r) {  if (n==1) { memcpy(A, _r, 4*sizeof(int)); return; }  int tmp[4];  power(A, n>>1, _r);  multiply(_r, _r, tmp);  if (n & 1 == 1) {    multiply(tmp, A, _r);  } else {    memcpy(_r, tmp, 4*sizeof(int));  }}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们

360网站安全检测平台