斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、……这个数列从第三项开始,每一项都等于前两项之和。
我们可以用一个递归算法写出指定项的数值:
- int function(int n)
- {
- if(n == 1||n == 2)
- {
- return 1;
- }
- else
- {
- n = (function(n-2)+function(n-1));
- return n;
- }
- }
当然如果求该数列前N项的数值,只要通过循环就能实现。
- int max_number = 9; //假设要求前9项
- int i;
- for(i=1;i<=max_number;i++)
- {
- cout<<function(i)<<",";
- }
问题是这样的,以上方法每循环一次,其实已经遍历了之前的所有数据,可否能通过一个函数,实现打印整个数列。而不是像上面的方法用循环实现。
意思是只通过一个函数,只遍历一次N之前的所有数据就能打印出整个数列,该如何实现呢?