之前我们可以用循环去求斐波纳契数列的和
1. #include<stdio.h> 2. int fib(int n) 3. { 4. int a=1,b=1,c=1; 5. while(n>2) 6. { 7. c=a+b; 8. a=b; 9. b=c; 10. n--; 11. } 12. return c; 13. 14. } 15. int main() 16. { 17. int n=1; 18. printf("请输入阶数\n"); 19. scanf("%d",&n); 20. printf("%d\n",fib(n)); 21. return 0; 22. }
学了递归,之后我们就可以利用数学公式,写出递归去求斐波纳契数列的和
1. #include<stdio.h> 2. int fib(int n) 3. { 4. 5. if(n<=2) 6. { 7. return 1; 8. } 9. else 10. return fib(n-2)+fib(n-1); 11. } 12. int main() 13. { 14. int n=1; 15. printf("请输入阶数\n"); 16. scanf("%d",&n); 17. printf("%d\n",fib(n)); 18. return 0; 19. }
对比两个两个代码,可知递归的方法更加简单,更容易理解