下面程序定义栈类模板StackTemplate,创建栈对象存储斐波那契数列的前10项数值,并以后进先出的方式取出元素并输出,输出结果为:55 34 21 13 8 5 3 2 1 1。其中void push(const T& i)函数为添加元素、T pop()函数为取出栈顶元素,int fibonacci(int n)函数为计算斐波那契数列的第n项值。在计算斐波那契数列值、添加元素和取出元素的过程中要进行上溢(OverFlow)或者下溢(UnderFlow)的异常处理。请补充空白处的代码(每空1分)。 【样例输入】 无 【样例输出】 55 34 21 13 8 5 3 2 1 1 #include <iostream> #include <iomanip> #include <cstdlib> using namespace std; enum ERROR{UnderFlow,OverFlow}; template<typename T> class StackTemplate { enum { ssize = 100 }; T stack[ssize]; int top; public: StackTemplate() : top(0) {} void push(const T& i) { if (top >= ssize) ; stack[top++] = i; } T pop() { if ( ) throw UnderFlow; return ; } int size() const{ return top; } }; int fibonacci(int n); int main() { { is; for(int i = 0; i < 10; i++) is.push(fibonacci(i)); for(int k = 0; k < 10; k++) cout <<setw(5)<< is.pop(); } catch( ERROR e ) { switch( ) { case OverFlow: exit(0); case UnderFlow: exit(0); } } catch(...) { } return 0; } int fibonacci(int n) { int sz = 100; int i; static int f[sz]; if (n >= sz) ; f[0] = f[1] = 1; for(i = 0; i < sz; i++) if(f[i] == 0) break; while(i <= n) { = f[i-1] + f[i-2]; i++; } return ; }
时间: 2024-02-10 14:33:40 浏览: 71
if (top >= ssize)
throw OverFlow;
stack[top++] = i;
if (top <= 0)
throw UnderFlow;
return stack[--top];
switch (e) {
case OverFlow:
exit(0);
case UnderFlow:
exit(0);
}
f[sz-1] = 1;
for (i = sz-2; i >= 0; i--)
f[i] = f[i+1] + f[i+2];
return f[n];
相关问题
用python编写代码完成以下操作:(1)创建 fib_a、fib_b两个变量用于斐波那契数列前两项的计算,并设置变量的初始值为 1(2)创建 fibonacci_seq列表,并设置列表的初始值为[1,1]。 (3)创建 for循环,迭代range函数所生成的对象,迭代对象范围为0至14(4)根据斐波那契数列公式对数列进行计算,并将计算结果依次添加至 fibonacci_seq 列表中。(5)利用sum 两数对斐波那契数列列表进行求和。(6)根据输出格式输出数列及数列的求和数值。
以下是实现以上操作的 Python 代码:
```python
# 创建 fib_a、fib_b 两个变量用于斐波那契数列前两项的计算,并设置变量的初始值为 1
fib_a, fib_b = 1, 1
# 创建 fibonacci_seq 列表,并设置列表的初始值为 [1, 1]
fibonacci_seq = [1, 1]
# 创建 for 循环,迭代 range 函数所生成的对象,迭代对象范围为 0 至 14
for i in range(2, 15):
# 根据斐波那契数列公式对数列进行计算,并将计算结果依次添加至 fibonacci_seq 列表中
fib_c = fib_a + fib_b
fibonacci_seq.append(fib_c)
fib_a = fib_b
fib_b = fib_c
# 利用 sum 对斐波那契数列列表进行求和
fib_sum = sum(fibonacci_seq)
# 根据输出格式输出数列及数列的求和数值
print("斐波那契数列为:", fibonacci_seq)
print("斐波那契数列的求和为:", fib_sum)
```
输出结果为:
```
斐波那契数列为: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]
斐波那契数列的求和为: 1596
```
斐波那契数列的计算。根据斐波那契数列的定义,编写程序输出斐波那契数列的前20项
斐波那契数列是一个经典的数学问题,它的定义是:第一个和第二个数为1,从第三个数开始,每个数都是前两个数的和。根据这个定义,我们可以编写程序来计算斐波那契数列的前20项。
以下是一个示例的Python代码:
```python
def fibonacci(n):
if n <= 0:
return []
elif n == 1:
return
elif n == 2:
return [1, 1]
else:
fib_list = [1, 1]
for i in range(2, n):
fib_list.append(fib_list[i-1] + fib_list[i-2])
return fib_list
fibonacci_sequence = fibonacci(20)
print(fibonacci_sequence)
```
运行以上代码,将输出斐波那契数列的前20项:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
阅读全文