美文网首页
接口和多态

接口和多态

作者: __method__ | 来源:发表于2020-11-01 17:35 被阅读0次
def factorial(n):
    if n <= 1:
        return 1
    else:
        return n* factorial(n-1)
print(factorial(6))
print(factorial(5))

# 1 * 2 * 3 * 4 * 5 * 6


def sum_naturals(n):
    if n in [0, 1]:
        return n
    else:
        return n + sum_naturals(n-1)
print(sum_naturals(0))
print(sum_naturals(1))
print(sum_naturals(5))



def remeber_fact(n0, product):
    if n0 <= 1:
        return product
    else:
        return remeber_fact(n0-1, product*n0)

print(remeber_fact(0, 1))
print(remeber_fact(0, 10))
print(remeber_fact(1, 1))
# 第一个数是 0, 1 返回第二个数
# 第一个数大于 1 返回的是
print(remeber_fact(4, 5))
# remeber_fact(n0-1, product*n0)
# remeber_fact(4, 5)
# remeber_fact(3, 5*4)
# remeber_fact(2, 5*4*3)
# remeber_fact(1, 5*4*3*2)


def factorial2(n):
    return remeber_fact(n, 1)

print(factorial2(6))
# remeber_fact(n0-1, product*n0)
# remeber_fact(6, 1)
# remeber_fact(5, 1*6)
# remeber_fact(4, 1*6*5)
# remeber_fact(3, 1*6*5*4)
# remeber_fact(2, 1*6*5*4*3)
# remeber_fact(1, 1*6*5*4*3*2)

# 求列表中所有的偶数累加和
def sum_acc(s, r):
    if r == []:
        return s
    elif r[0] % 2 == 0:

        return sum_acc(s + r[0], r[1:])
    else:
        return sum_acc(s, r[1:])
def sum_evens(L):
    return sum_acc(0, L)

print(sum_evens([3, 4, 5, 4]))
print(sum_evens([]))



def count(s, char):
    if s == '':
        return 0
    else:
        is_char = 0
        if s.find(char) ==0 and char != '' :
            is_char += 1
        return count(s[1:], char) + is_char
print(count("", ""))     # 0
print('"',count("banana", ""))  # 0
print(count("banana", "a"))    # 3
print(count("banana", "z"))       #0



def count_acc(s, char, acc):
    if s == '':
        return acc
    else:
        is_char = 0
        if s.find(char) ==0 and char != '' :
            is_char += 1
        return count_acc(s[1:], char, acc+is_char)
def count_letters(s, char):
    return count_acc(s, char, 0)
print(count_letters("", ""))     # 0
print('"',count_letters("banana", ""))  # 0
print(count_letters("banana", "a"))    # 3
print(count_letters("banana", "z"))       #0



print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++")
# 奇数和
def sum_odd(L):
    if L == []:
        return 0
    else:
        if L[0]%2== 1:
            return L[0] + sum_odd(L[1:])
    return sum_odd(L[1:])

print(sum_odd([]))   # 0
print(sum_odd([1]))     # 1
print(sum_odd([1, 2, 3]))   # 4

print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++")
def filter_odd(L):
    if L==[]:
        return []
    else:
        if L[0]%2 !=0:
            return [L[0]] + filter_odd(L[1:])
        else:
            return  filter_odd(L[1:])

print(filter_odd([]))
print(filter_odd([1, 2, 3]))
print(filter_odd([2, 4, 6, 8]))


print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++")
def inverse(L):
    if L == []:
        return []
    else:
        return  [L[-1]] + inverse(L[:-1])
    pass
print(inverse([]))
print(inverse([1, 2, 3]))

print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++")
def product(L):
    if L ==[]:
        return 1
    else:
        return L[0]*product(L[1:])
print(product([]))
print(product([3]))
print(product([2, 3, 5]))

print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++")
def mul_table(n):
    if n <= 0 :
        return [[0]]
    else:
        return [[mul_table(n-1)]]


print(mul_table(0))
print(mul_table(1))
print(mul_table(2))

相关文章

  • 接口和多态

  • Java基础-day12-接口

    接口 1. 接口 1.1 接口使用操作 2. 多态 2.1 动物园 2.2 USB接口 2.3 多态总结

  • 【Effective C++(7)】模板与泛型编程

    41 了解隐式接口和编译期多态 OOP总是通过显式接口和运行期多态解决问题,如函数doProcessing内的w类...

  • JAVAOOP  多态和接口

    1. 面向对象三大特征就是:封装,继承,多态,其中多态是OOP中最核心的一个特征。 2. 为什么要用多态呢,举个...

  • 接口、继承和多态

    1、super 这是一个和父类相关的关键字,在构造函数中调用父类构造函数、调用父类的方法或者成员变量都要用到它。 ...

  • 关于类的重写多态

    我们知道,面向对象三大特性里,封装、继承和多态里,多态是最复杂的。多态的实现方式分为接口、重写Override和重...

  • 《Java8学习笔记》读书笔记(八)

    第7章 接口与多态 学习目标 使用接口定义 了解接口的多态操作 利用接口枚举常数 利用enum枚举常数 7.1 ...

  • Java多态的具体体现

    面向对象编程有四;个特征:抽象,封装,继承,多态。 多态有四种体现形式: 1. 接口和接口的继承。 2. 类和类的...

  • java多态

    面向对象的三大特点是封装、继承、多态,其中extends类和implements接口是多态的基础,所谓多态,是对一...

  • c++虚函数

    说到虚函数,首先要讲一下OOP中的多态,多态简单的说就是一个接口,多种实现. 多态分为编译时多态和运行时多态。编译...

网友评论

      本文标题:接口和多态

      本文链接:https://www.haomeiwen.com/subject/pkwyvktx.html