再帰と非再帰的アルゴリズム、7実際のPythonの例

演習1

パワー累乗を行う関数を作成します。nは**私は、任意の数であります

#递归
DEF力(N、I):
どうか== 1:
リターンN
リターンN *パワー(N、I-1)
プリント(パワー(2,4))

演習2

チェック任意の文字列が回文文字列、trueを返し、そうでなければFalseであるかどうかという関数を作成します

#回文文字列、文字列は、手前から奥に読み、前方同じ#abcbaから読み取ります

#チェック最初の文字と最後の文字、そうでない場合、文字列が回文されていない場合、
#チェックabcdefgfedcbaが回文ではありません
#チェックbcdefgfedcbは回文されていない
#チェックcdefgfedcは回文されていない
#チェックがdefgfedは回文ではありません
#チェックefgfeは回文ではありません
#のFGF検査は回文されていない
#gのチェックは回文されていません

#递归
DEFキー(S):
lenの場合(S)<2:
リターン真
#プリント(S)
のelif S [0] = S [-1]:!
リターン偽
リターンFN(S [1:-1])
印刷(FN( 'ABCBA'))

演習3、サル、食べる桃

最初の桃の数オフ日、すぐに食べ半分だけでなく、食べる、それらが1つを、残りの桃の半分食べ翌日食べる第4日の三日目は、そのような##ました五日目は、一つだけ食べるとき。#猿の最初の日はどのように多くの桃の合計を選ん計算するプログラムを書きます。

#非再帰
。N- = 1
の範囲内のSのための(4,0、-1):
#Print(S)
N - =(N + 1)* 2
プリント(N-)

一日数5 = 1;
番号#= 4日(5日数1)* 2
番号#3 =日(4日目数+ 1)* 2
#2 =日数( 3日目+ 1の数)* 2
番号#1 =日(2日目+1数)* 2

#递归
DEF FN2(N):
もしN == 5:
リターン1つの
リターン(FN2(N + 1)+1)* 2
プリント(FN2(1))

運動4、最初の二つの和に等しい各々がフィボナッチ数、段落3の最初の列の数、。テストの数は十五列の数を決定するには?

数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…

#递归
DEF FN3(N):
もしN <3:
リターン1
戻りFN3(N-1)+ FN3(N-2)
プリント(FN3(15))
プリント( '*' * 30)

運動5、リターン1 + 2 + 3 + 4 + 5 + N、および

#非再帰
N- = 100
の範囲でIのための(1100):
N-N- + = I
印刷(N-)

#递归
DEF FN4(N)
であればnは1 ==:
リターン1
リターンN + FN4(N-1)
プリント(FN4(100))
印刷( '*' * 30)

演習6は、10を返します!

#非再帰的な
#10 に必要な9!9 8今すぐ!... 2 1!
10 = N-
範囲でI(1,10)のために:
N-N- =
Iは、
(N)を印刷します

#递归
DEF fn5(N)
であればnは1 ==:
リターン1
リターンN fn5(N-1)
プリント(fn5(10))
印刷(」
「* 30)

演習7、プリント*

#***
#**
#*

#非再帰
N- = 6。
の範囲でX用(5):
。N- = 1-N-
印刷( '*' * N-)

#递归
デフFN6(N):
もしN == 1:
印刷( ' ')
他:
プリント('
' * n)と
FN6(N-1)
FN6(5)

出版元の記事 ウォンの賞賛1 ビュー11

おすすめ

転載: blog.csdn.net/weixin_46227398/article/details/104815263