算法入門(mén)(1)

** 以下都是通過(guò)枚舉法解決問(wèn)題的。其實(shí)枚舉法的本質(zhì)就是把所有問(wèn)題可能的結(jié)果都嘗試一邊,再通過(guò)某種條件將錯(cuò)誤的結(jié)果篩選出去,留下的便是正確的結(jié)果。 **

  1. 輸出一個(gè)直角三角形,符合 注釋中的那個(gè)三角形格式。
# 輸出一個(gè)個(gè)三角形
# 輸入 5 輸出的是一個(gè)五行的三角形
# 第一行 1個(gè)* 第二行 2個(gè) ... 第五行五個(gè)
# 第一步 我們需要一層for循環(huán)控制輸出 n行 *
# 第二步 我們需要一層for循環(huán)控制每一層輸出*的個(gè)數(shù) 1,2,3,4,5
# for i in range(n):
#   for j in range(i+1):
# *
# **
# ***
# ****
# *****
def out_angle1(n):
    for i in range(n):
        for j in range(i+1):
            print("*",end="")
        print()
  1. 以下根據(jù)案例1改變的輸出三角形,可以根據(jù)1嘗試寫(xiě)一下。
#     *
#    **
#   ***
#  ****
# *****
def out_angle2(n):
    for i in range(n):
        for j in range(n-i-1):
            print(" ",end="")
        for j in range(n - i,n+1):
            print("*", end="")

        print()
#     *
#    ***
#   *****
#  *******
# *********
def out_angle3(n):
    for i in range(n):
        for j in range(n-i-1):
            print(" ",end="")
        for k in range(2*(i+1)-1):
            print("*",end="")
  1. 斐波那契數(shù)列:1,1,2,3,5,8,13,21,34,55,......。斐波那契額數(shù)列的規(guī)律是 前兩個(gè)為1,從第三個(gè)開(kāi)始的每一個(gè)數(shù)為前一個(gè)數(shù)與前一個(gè)數(shù)的前一個(gè)數(shù)字的和。比如:第三個(gè)數(shù)2為第二個(gè)數(shù)和第一個(gè)數(shù)的和。第四個(gè)數(shù)3為第三個(gè)數(shù)與第二個(gè)數(shù)的和。以下為遞歸和非遞歸的兩種求解方式。
# fbnq 遞歸
def fib(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fib(n-1)+fib(n-2)
# 非遞歸
def fib_n(n):
    result = 0
    a = 0
    b = 0
    for i in range(n+1):
        if i<=2:
            result = 1
            a = 1
            b = 1
        else:
            result = a+b
            b,a = result,b
    return result

4.求前100個(gè)素?cái)?shù)和,素?cái)?shù)是只能被1和本身整除的數(shù)。1不是素?cái)?shù)。


# 判斷 100以內(nèi)素?cái)?shù) 并進(jìn)行求和

def is_prime(n):
    result = 0
    for i in range(2,n):
        is_pr = True
        diversor = int(i/2)+1
        # print(diversor)
        if i>2:
            for j in range(2,diversor):
                if i %j == 0:
                    is_pr = False
                    break
        if is_pr == True:
            result = result +i
            print(i,end= " ")
    return  result

def is_prime_2(n):
    result = 0
    prime_list = []
    for i in range(2,n):
        is_pr = True
        if i %2 == 0 and i!=2:
            is_pr = False
        else:
            for j in prime_list:

                if i %j == 0:
                    is_pr = False
                    break
        if is_pr == True:
            result = result +i
            prime_list .append(i)
            print(i,end= " ")
    return  result

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容