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

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

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

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

Q&A

解決済

3回答

171閲覧

pythonのreturn文の返り値について

babbleman

総合スコア107

Python

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

0グッド

0クリップ

投稿2018/11/08 12:45

編集2018/11/08 12:47

python

1def factman(num,o=1): 2 if num==1: 3 return o 4 o=num*o 5 num-=1 6 factman(num,o) 7print(factman(500))

上記の様なコードを書いたのですが、出力がNONEになってしまいます。
確かに数値をreturnしているはずなのに、なぜこのようなことが起こってしまうのでしょうか?

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

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

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

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

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

guest

回答3

0

ベストアンサー

惜しい。

Python

1def factman(num,o=1): 2 if num==1: 3 return o 4 o=num*o 5 num-=1 6 return factman(num,o)

投稿2018/11/08 12:53

otn

総合スコア84505

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

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

babbleman

2018/11/08 13:02

やり方はわかりましたが、num=に戻ってくるはずなので何故そうなるかがわからないです・・・
otn

2018/11/08 13:07

どんどん呼び出して、num==1になるとどんどん戻ってきますが、return o するのは、一番底のリターンの時だけです。それより上の階層の呼び出しではreturnがないので、関数の一番最後の行を実行して終わるのでNoneが返ります。
babbleman

2018/11/08 13:09

理解出来ました。ありがとうございます。
guest

0

何も返さない実行パスがあるからです。

Python

1def f(v): 2 if v > 0: 3 return v 4 # 何も返していない 5 # return とおなじ 6print(f(1)) # 1 7print(f(0)) # None

投稿2018/11/08 12:51

編集2018/11/08 12:53
can110

総合スコア38262

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

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

LouiS0616

2018/11/08 12:53

print(f(0)) # None では。
can110

2018/11/08 12:53

です! 修正しました。
babbleman

2018/11/08 13:00

f(1)の時は返すんですよね? factmanは必ずnun=1に戻ってくるように書いてあるのでnum=1の時のreturnが適用されるのではないでしょうか?
can110

2018/11/08 13:03

otnさんの回答とご自身のコードを見比べてください。 また、この質問とは別件となりますが、クローズされていない質問が多くありますが、なぜでしょうか?
babbleman

2018/11/08 13:08

すみません、今から閉じてきます。
guest

0

num!=1
では?

投稿2018/11/08 12:49

mkgrei

総合スコア8560

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問