斐波那契数列 C#解法(递归 for循环) C++解法(简易动态规划)

斐波那契数列

题目描述:

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39

递归解法(不推荐):

class Solution {
		public int Fibonacci(int n) {
			if(n<=1) return n;
			int result=0;
			result=Fibonacci(n-1)+Fibonacci(n-2);
			return result;
		}
}

思路:没什么好说的,递归解法没什么技术含量,消耗内存巨大,运行时间巨长.

for循环解法:

class Solution {
		public int Fibonacci(int n) {
			int current=0;
			int next=1;
			int result=0;
			if(n<=1) return n;
			for(int i=2; i<=n; i++) {
				result=current+next;
				current=next;
				next=result;
			}
			return result;
		}
}

思路:利用for循环来实现递归,输入的n为for循环的循环次数.

动态规划解法:

class Solution {
	public:
		int Fibonacci(int n) {
			int f = 0, g = 1;
			while(n--) {
				g += f;
				f = g - f;
			}
			return f;
		}
};

思路:这里从动态规划的核心思想-记录结果再利用入手解答.用f记录上一个结果的答案,再通过与g相加得出结果.

猜你喜欢

转载自blog.csdn.net/qq_43461641/article/details/89143952