遞迴視覺化畫分形樹

2021-10-06 12:40:31 字數 1500 閱讀 4896

「遞迴」是乙個理解起來簡單,原理清晰但是比較難操作的一類方法。

遞迴函式就是能夠自己呼叫自己的函式,要使用遞迴,首先要滿足其所需要求:

1)必須有乙個基本結束條件(否則會陷入死迴圈)

2)必須呼叫自身

3)必須能改變狀態向基本結束條件演進

下面用遞迴的方法畫乙個分形樹:

我們先將問題簡化,這個樹的基本組成結構是』y』形狀,那麼就可以將問題簡化為是由多個『y』拼接而成的。從而使用遞迴函式畫圖。

import turtle

deftree

(branch_len)

:if branch_len >5:

t.forward(branch_len)

#畫樹幹

t.right(20)

#向右20°

tree(branch_len -15)

#遞迴函式畫右側

t.left(40)

#向左偏移40°

tree(branch_len -15)

#遞迴呼叫畫左側

t.right(20)

#向右偏移20°,此時相當於與樹幹共線的方向

t.backward(branch_len)

#退回原位置

t = turtle.turtle(

)t.left(90)

t.penup(

) t.backward(

300)

t.pendown(

)t.pencolor(

'red'

)t.pensize(2)

tree(

125)

t.hideturtle(

)turtle.done(

)

下面來分析一下這個函式的執行過程:

就用長度從60開始的函式來看:

tree(60):畫樹幹長為60,向右偏移20°     (1)

tree(45):畫樹幹長為45,向右偏移20° (2)

tree(30):畫樹幹長為30,向右偏移20° (3)

tree(15):畫樹幹長為15,向右偏移20° (4)

tree(0):遞迴結束(結束之後要進行的是tree(15)這個函式的下半部分)

向左偏移40°(此處開始執行tree(15)後半部分)

tree(0):第二個遞迴,不滿足基本條件,遞迴結束

tree(15)向右偏移20°,後退原位置

向左偏移40°(此處開始執行tree(30)後半部分)

tree(15):畫樹幹長為15,向右偏移20° (5)

。。。

上面的括號裡面的數對應的是下圖標註的數:

json視覺化樹

近期專案需要整合第三方webservice服務,前端介面需要將第三方請求json,返回json的視覺化展示。借用第三方外掛程式展示 vue json viewer 利用reflect遞迴查詢賦值 請求資料 pwd body myproperty 響應資料 body myproperty 借用第三方外...

決策樹視覺化

決策樹相比其他演算法的乙個重要特性就是 可解釋性,構建決策樹的過程就相當於形成 if then 規則集。如果我們能夠將生成的決策樹視覺化,那麼我們就可以對資料集與 值之間的關係有清晰的認識。首先,我們以 sklearn.datasets 包中的鳶尾花資料集為例。from sklearn.datase...

資料視覺化 什麼是資料視覺化

資料對應的英文單詞是data,從資訊獲取的角度看,資料是對目標觀察和記錄的結果,是現實世界中的時間 地點 事件 其他物件或概念的描述。不同學者對資料的作用也給出不同的定義,大致分為以下3類 視覺化對應的兩個英文單詞 visualize和visualization。visualize是動詞,描述 生成...