----斐波那契数列---eval函数----类递归思想 栈 进出 思想

------------    斐波那契 数列   ---------------

【1,1,2,3,5,8,13,21,34,...】

   1  列表方法实现

# l=[1,1]
#
# # while len(l)<=20:
# #     l.append(l[-1]+l[-2])
# # print(l)
#
# while len(l)!=4:
#     l.append(l[-1]+l[-2])
# print(l)
#

2  迭代实现

# n=10
#
# n1 = 1
# n2 = 1
# n3 = 1
#
# if n<=2:
#     re=1
#     print(re)
# if n>2:
#     m=1
#     while m <= n-2:
#         n3 = n1 + n2
#         n1 = n2
#         n2 = n3
#         m+= 1
#     re=n3
#
#     print(re)




-------- eval() -------- 把字符串 强转 为实际的数据------------

 eval(‘print(123)‘)

 eval(‘func‘)()

 eval 存在安全隐患---->> 会把其他关键字识别---使用
---------------  类递归思想     列表---栈 进出思想---------------

                        附加题
# # 有?个数据结构如下所?,请编写?个函数从该结构数据中返回由指定的字段和对应的值组成的字# # 典。如果指定字段不存在,则跳过该字段。(10分)#data={"time":"2016-08-05T13:13:05", "some_id":"ID1234", "grp1":{ "fld1":1, "fld2":2}, "xxx2":{ "fld3":0, "fld5":0.4}, "fld6":11, "fld7":7, "fld46":8}

# fields:由"|"连接的以"fld"开头的字符串,如:fld2|fld3|fld7|fld19

fields=‘fld2|fld3|fld7‘
fields_list=fields.split(‘|‘)

my_dict={}
data_list=[1]

while data!=1:
    for key in data:
        if key in fields_list:
            my_dict[key]=data[key]
        if type(data[key])==dict:
            data_list.append(data[key])    # 如果有的话一直 添加
    data=data_list.pop()        # 取出最后一个
print(my_dict)

时间: 2025-01-02 00:29:07

----斐波那契数列---eval函数----类递归思想 栈 进出 思想的相关文章

补充 ----斐波那契数列---eval函数

------------ 斐波那契 数列 --------------- [1,1,2,3,5,8,13,21,34,...] 1 列表方法实现 # l=[1,1]## # while len(l)<=20:# # l.append(l[-1]+l[-2])# # print(l)## while len(l)!=4:# l.append(l[-1]+l[-2])# print(l)# 2 迭代实现 # n=10## n1 = 1# n2 = 1# n3 = 1## if n<=2:# re=

通过“”斐波那契数列“”学习函数递归

斐波那契数列: f(0) = 0  f(1) = 1 f(2) = 1 f(3) = 2  f(4) = 3   f(5) = 8 .......f(n) = f(n - 2) + f(n - 1) 实现方法一: #这个方法使用列表,将结果保存def fbis(num): result = [0,1] for i in range(num - 2): result.append(result[-2] + result[-1]) return result 实现方法二: def fbis_othe

斐波那契数列(Fibonacci)递归和非递归实现

序列前9项为:0, 1, 1, 2, 3, 5, 8, 13, 21 要注意非递归的话就是那一个变量帮助存储当前下一项的值,然后依次挪动两个指针往下即可 注意如果n太大 会溢出 1     public static long fib(int n){ 2         if(n <= 1) 3             return n; 4         else 5             return fib(n-1) + fib(n-2); 6     } 7      8     p

c语言:写一个函数,输入n,求斐波拉契数列的第n项(5种方法,层层优化)

写一个函数,输入n,求斐波拉契数列的第n项. 斐波拉契数列:1,1,2,3,5,8...,当n大于等于3时,后一项为前面两项之和. 解:方法1:从斐波拉契数列的函数定义角度编程 #include<stdio.h> int fibonacci(int n) { int num1=1, num2=1, num3=0,i; if (n <= 2) { printf("斐波拉契数列的第%d项为:%d\n",n,num1); } else { for (i = 2; i <

python 题目:斐波那契数列计算;题目:站队顺序输出;题目:合法括号组合的生成;题目:用户登录(三次机会)

斐波那契数列计算 B 描述 斐波那契数列如下: F(0) = 0, F(1) = 1 F(n) = F(n-1) + F(n-2) 编写一个计算斐波那契数列的函数,采用递归方式,输出不超过n的所有斐波那契数列元素 调用上述函数,完成如下功能: 用户输入一个整数n,输出所有不超过n的斐波那契数列元素.输出数列的元素和及平均数,输出按照顺序,用英文逗号和空格分割 此题目为自动评阅,请严格按照要求规范输入和输出. def jebona(n): if n==0: return 0 elif n == 1

Python递归及斐波那契数列

递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以看出:fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n所以,fact(n)可以表示为 n * fact(n-1),只有n=1时需要特殊处理.于是,fact(n)用递归的方式写出来就是: def fact(

JS 从斐波那契数列浅谈递归

一.前言 昨晚下班后,经理出于兴趣给我们技术组讲了讲算法相关的东西,全程一脸懵逼的听,中途还给我们出了一道比较有趣的爬楼问题,问题如下: 假设一个人从地面开始爬楼梯,规定一步只能爬一坎或者两坎,人只能往上走,例如爬到第一坎,很明显从地面到第一坎只有一种可选方式,从地面爬到第二坎,他可以从地面直接跨到第二坎,也可以先从地面到第一坎,再从第一坎到第二坎,也就是2种可选方式,那么求他爬到N楼一共有几种可选方式. 这道题涉及到了斐波那契数列,要求使用递归来求值,技术贼菜的我也是一脸懵逼,所以本着学习的心

Python计算斐波那契数列

利用Python计算第一个达到一百万位数的斐波那契数列各位数之和 结果为4501552 以下是我用到的代码,不是中间需要一些人工操作来加快收敛性,有兴趣读者可以写代码加快收敛 首先执行这个,可以大致确定一百万个数所在斐波那契序列的位置 i=1 j=1 k=i+j count=3 while count<4850000: i=j j=k k=i+j count+=1 result=str(k) print('k长度') k_len=len(result) print(k_len) sum=0 fo

09_斐波那契数列

#include<iostream> #include<vector> #include<Ctime> using namespace std; long long fibRecursion(unsigned n) { if(n <= 0) { return 0LL; } if(n == 1) { return 1LL; } if(n >= 2) { return fibRecursion(n - 1) + fibRecursion(n -2); } } l