質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3401閲覧

漸化式で定義された数列の項のリストを作る

lucy-0333

総合スコア5

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2グッド

4クリップ

投稿2020/05/15 06:56

前提・実現したいこと

pythonで、漸化式によって数列を定義し、それをもとにその数列の項のリストを作る、という作業を行っています。しかし、なぜか出力結果が[0,none,none,none…]という感じに全てnoneになってしまいます。漸化式の定義におかしな所があるのだとは思うのですが、どう対処すればいいか全くわかりません。

import numpy as np
h=float(0.1)
k=input("λの値を入力してください。")
def Y(n):
a=1
if n == 1:
return a
else:
for i in range(n-1):
a = a*(1-h*k)

def t(n):
a=0
if n == 1:
return a
else:
for i in range(n-1):
a = a+h

xlist=[t(n) for n in range (1,100)]#t(j)に関するリストを作成する。

ylist=[Y(n) for n in range (1,100)]#Y(j)に関するリストを作成する。

print(xlist)
print(ylist)

今のところこんな感じで作っています。初心者なのでもしかするととんでもなく初歩的なミスをしているかもしれません、御助言頂けると幸いです。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

python

試したこと

フィボナッチ数列の反復法による定め方をネットで参考にしてやってみたのですが、上記のようなことになりました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

skysoul, DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

skysoul

2020/05/15 07:02

インデントを忘れてませんか?
guest

回答2

0

再帰関数を書くときにありがちなミスです。

Python

1def t(n): 2 a=0 3 if n == 1: 4 return a 5 else: 6 for i in range(n-1): 7 a = a+h 8 9 return a # 必須

内側の関数が値を返したとしても、外側がそれを無視したのでは意味がありません。

コードの貼り方について

teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押して下さい。
特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。
Python

投稿2020/05/15 07:00

編集2020/05/15 07:01
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

returnが無いのとinput()をfloatとして受け取る必要があります。

python

1import numpy as np 2 3h=0.1 4k=float(input("λの値を入力してください。")) 5def Y(n): 6 a=1 7 if n == 1: 8 return a 9 else: 10 for i in range(n-1): 11 a = a*(1-h*k) 12 return a 13 14def t(n): 15 a=0 16 if n == 1: 17 return a 18 else: 19 for i in range(n-1): 20 a = a+h 21 return a 22 23xlist=[t(n) for n in range (1,100)]#t(j)に関するリストを作成する。 24 25ylist=[Y(n) for n in range (1,100)]#Y(j)に関するリストを作成する。 26 27print(xlist) 28print(ylist)

投稿2020/05/15 07:37

Tiger_

総合スコア94

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lucy-0333

2020/05/15 07:47

ありがとうございます、そのやり方でちゃんと作動しました。 ただ、また別の問題が出てしまいました…t(n)は[0,0.1,0.2,0.3…]という感じに0.1ずつ増えるはずなのですが、なぜか[0,0.1,0.1,0.1,0.1…]の繰り返しになってしまいます。t(n)の定義におかしいところがあるのでしょうか?
lucy-0333

2020/05/15 13:25

解決しました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問