免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 25543 | 回复: 5
打印 上一主题 下一主题

[算法] Fibonacci数列C语言算法问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-28 17:54 |显示全部楼层 |倒序浏览
    请各问各位前辈,用C语言编一个程序计算出斐波那契数列的第N位数,如果不用递归算法而是用循环的话,应该如何实现呢(最好也不用数组)?我想了一个下午都没有任何进展,请各位帮忙看看。感激不尽!
   下面我做了个函数调用的测试,但关键部位还是想不出来。
  1. #include <stdio.h>

  2. unsigned long test_fibonacci(int n);


  3. int main(void)
  4. {
  5.     int n;
  6.    
  7.     printf("Enter a positive integer (q to quit): ");
  8.     while(scanf("%d", &n) == 1)
  9.     {
  10.         printf("\nThe %dth number in the fibonacci numbers is %lu",
  11.                n, test_fibonacci(n));
  12.         printf("\nEnter a positive integer (q to quit): ");
  13.     }
  14.     puts("\nDone!");

  15.     return 0;
  16. }

  17. unsigned long test_fibonacci(int n)
  18. {
  19.     int i, sum = 0;

  20.     if(n <= 2)
  21.         sum = 1;
  22.     else
  23.         for(i = 2; i <= n; i++)
  24.         {
  25.         }

  26.     return sum;
  27. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2013-03-28 18:43 |显示全部楼层
windoze 发表于 2013-03-28 18:37
搞个数组,把每个算过的值都存起来。
贴个python的循环程序

谢谢你,丰衣足食。用数组来存储有其可取之处,不过很难确定数组的大小,因为不知程序的使用者想制定斐波那契数列中的哪一位,所以最好能够避免使用数组。
请各位继续不吝赐教!多谢!

论坛徽章:
0
3 [报告]
发表于 2013-03-28 18:49 |显示全部楼层
pmerofc 发表于 2013-03-28 18:43
回复 1# mcmay


你好,pmerofc。就是说,比如:1 1 2 3 5 8 13 21 ...,如果N = 3就是2,N = 6就是8,等等。谢谢!

论坛徽章:
0
4 [报告]
发表于 2013-03-28 21:31 |显示全部楼层
听君一席话,胜读十年书。楼上几位的点拨让我茅塞顿开!尤其是pmerofc和folklore两位仁兄的代码解析,迭代法在此又展神威。还请folklore说一下代码中“&0x03UL”是什么,我有些看不明白。好像是将数组元素个数往后延展,不过不知如何达到这个功能的,看起来有点像汇编的样子。

论坛徽章:
0
5 [报告]
发表于 2013-03-28 21:54 |显示全部楼层
folklore 发表于 2013-03-28 21:45
回复 10# mcmay

受教了!关于环形数组我还没有学到过,是C99里新加进去的内容吗?在哪里可以学到这些扩展知识?多谢!

论坛徽章:
0
6 [报告]
发表于 2013-03-29 09:05 |显示全部楼层
folklore 发表于 2013-03-28 22:10
回复 12# mcmay

这样一说就明白了,谢谢folklore兄!不过,我八卦多问一句,像你以及楼上几位这样处理这个问题的知识和经验从何而来?是以前见到过类似情形还是系统地学过的算法中包含了对这个问题的处理方法?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP