前要:什么是斐波那契数列?
斐波那契数列通俗的讲就是在一串数列中,比如:1,1,2,3,5,8,13,21,34,55......,前两个数的和等于第三个数,反过来说就是任意第三个数是前面两个数相加的和,公式表达式为:n=(n-1)+(n-2)。注意其中n表示在这串数列中第n个数,也就是下标的意思,并不是说这个数是n。相信大家应该明白这个意思了。下面我们运用c语言为大家介绍两个方法:
方法一(函数的递归法)【不建议大家使用这种方法】:
#includeint add(int x) { if(x<=2) { return 1; } else return add(x-1)+add(x-2); } int main() { int n=0,pen=0; scanf("%d",&n); pen=add(n); printf("pen=%d",pen) ; return 0; } 在这里我们首先创建一个自定义函数,然后把变量n放入自定义函数中,结合上面的公式:n=(n-1)+(n-2),衍生出:自定义函数(x-1)+自定义函数(x-2),但请大家注意,这样做有一个非常大的缺点就是会产生栈溢出,因为计算机会不断寻找前两个数,每次调用一次自定义函数会重复寻找前两个数,导致计算机运算负荷较大,形成栈溢出,如果n<40还好,计算机能立即运算出来,但是n>40的时候,就要花费大量时间才能运算出来,所以不推荐大家使用这种方法。
方法二:(while循环法)【建议大家使用这种方法】:
#includeint add(int x) { int a=1,b=1,c=1; if(x<=2) { return 1; } while(x>2) { c=a+b; a=b; b=c; x--; } return c; } int main() { int n=0,pen=0; scanf("%d",&n); pen=add(n); printf("pen=%d",pen); return 0; } 这个方法主要是利用while循环,我们先创建一个自定义函数,然后再在自定义函数中创建初始变量a和b,利用这两个循环变量不断相加,得到你想要的这个值。这种算法就比较好,不会产生方法一那样的栈溢出,计算机运算较快,所以建议大家使用这种方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)