Python 递归计算分数数列

C语言的课后习题

求数列:2/1,3/2,5/3,8/5,13/8,21/13,...前50项的和

数列规律:

第二项的分母是【前一项分子】

第二项的分子是【前一项分子与分母的和】

from fractions import Fraction

def fn(x):
    """
    计算每一项的值
    """
    time = 1
    fz = 2
    fm = 1
    if x == 1:return fz / fm
    #if x == 1:return Fraction(fz, fm) 这句话是分数表示
    else:
        while time < x :
            cost = fz + fm
            fm = fz
            fz = cost
            time = time + 1
        return fz / fm
        #return Fraction(fz, fm)

def sum_fn(x):
    """
    递归计算,进行函数每一项的相加
    """
    if x == 1:return 2
    else:
        return fn(x) + sum_fn(x-1)

a = int(input("请输入连续加到的项数:"))
print(sum_fn(a))

原文地址:https://www.cnblogs.com/Alins/p/10747822.html

时间: 2024-10-09 05:05:58

Python 递归计算分数数列的相关文章

AOJ 762.分数数列

分数数列 Time Limit: 1000 ms   Case Time Limit: 1000 ms   Memory Limit: 64 MBTotal Submission: 11   Submission Accepted: 3 Description 一个数列的前6项为:1/2,3/5,4/7,6/10,8/13,9/15等,试求数列的第n项(n<2000) Input 输入一个整数n(0< n < 2000) Output 输出数列的第n项 Sample Input Orig

C语言笔试经典--求分数数列的和

题目: 求数组的和 2   3/2   5/3   8/5  13/8   21/13  ... 求前20项的和 //求分数数列的和 #include<stdio.h> // 2/1 3/2 5/3 8/5 13/8 ... int main() { float z=2; float m=1; float sum=0; int i=0; float a; while(i<20) //将数值累加 { sum+=z/m; a=z; z=z+m; m=a; i++; } printf(&quo

python 笔记 寻找数列的规则

li = [0,1,1,2,3,5,8] def func(arg1,arg2):     if arg1 == 0:         print (arg1,arg2)     arg3 = arg1+arg2     print (arg3)     if arg1 <=1000:         func(arg2,arg3) func(0,1) 求n,m,m+n 数列递归 C:\Users\pcdog\AppData\Local\Programs\Python\Python35\pyth

python基础入门---数列的一些增删改查操作

数列的一些增删改查操作 import copy names = ["aa","bb","cc","dd"] print(names) print(names[1],names[2]) print(names[0:2])#切片,要头不要尾 print(names[:2])#和上一个结果一样 print(names[-1])#切片,取倒数第一个 print(names[-2])#切片,取倒数第二个 print(names[-2:]

Python 输入分数并评

类似于猜年龄,主要使用else if 函数. score=int(input('input a number')) if 100>=score>= 90: print('A') else: if 90>score>=80: print('B') else: if 80>score>=60: print('C') else: if score<60: print('D') else: print('wrong') 原文地址:https://www.cnblogs.c

python实现fibonacci数列的三种方法

第一种:递归法 def fibo(n): if n < 3: return 1 return fibo(n-1) + fibo(n-2) print(fibo(6)) 第二种:循环 1 def fibo1(n): 2 a, b = 1, 1 3 for i in range(n): 4 a, b = b, a+b 5 return a 6 7 print(fibo1(6)) 第三种:生成器 1 def fibo2(n): 2 a, b = 1, 1 3 while n: 4 yield a 5

Python 趣味百题

趣味整数 1 不重复的3位数 -易 2 水仙花数 -易 3 完全数 -中 4 相亲数 -中 5 黑洞数 -中 6 勾股数 -易 7 自守数 -易 8 3位反序数 -中 趣味素数 1 素数 -中 2 孪生素数 -中 3 金蝉素数 -中 4 可逆素数 -中 5 回文素数 -中 6 平方回文素数 -中 7 梅森尼数 -中 8 哥德巴赫猜想 -中 9 等差素数数列 -中 趣味图形 1 回型矩阵 -中 2 九九乘法表 -易 3 杨辉三角 -易 数学问题 1 天平秤物 -难 2 黑色星期五 -易 3 存钱问

转一下递归

递归专题:我个人认为递归是算法中很重要的武器,虽然递归的效率很慢,但他是我们学习其他算法的基础,而递归这一算法又很抽象,也很难调试,所以我认为我有必要要这里好好理解递归这一有力的武器..表达式的转化:#include<cstdio>#include<iostream>#include<math.h>#include <string>using namespace std; double calc(){    char s[10];    cin>>

尾递归(转)

add by zhj: 尾递归其实跟循环在代码形式上非常像,尾递归会同时用到反推和正推,由n->n-1是反推,由acc1, acc2 = acc2, acc1+acc2是正推.参见本文最后,分别用循环和尾递归实现Fibonacci数列. 原文:http://www.nowamagic.net/librarys/veda/detail/2325 尾递归(tail recursive),看名字就知道是某种形式的递归.简单的说递归就是函数自己调用自己.那尾递归和递归之间的差别就只能体现在参数上了. 尾