質問編集履歴

1

コードの所を変集してみました。初めてなので質問の間違っていることを指摘してくれると助かります。

2023/01/27 15:12

投稿

kaiki-0615
kaiki-0615

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,34 +1,29 @@
1
1
  ### 前提
2
2
  pythonの問題です。大学の授業で「#コードを1行埋めよ」という課題が出されたのですが、長考しても解けませんでした。課題なのでヒントが欲しいです。
3
- 自分は初学者なので未熟ですが教えてくださると助かります。
3
+ 自分は初学者なので未熟ですが教えてくださると助かります。いろいろと試したのですがエラーが出てしまいます。
4
+ [pythonの課題について](https://colab.research.google.com/drive/1fhV1SVgVYgEu8nAbKx66SXQB4sTFc9fn?hl=ja#scrollTo=562bd491)
5
+ ```
4
- 【次の関数solve(f, m, M)を完成させ、x3+x21=0の解を求めよ。
6
+ L = [104290, 435926, 616033, 683131, 701920, 715611, 762990, 810050, 848378, 995942]
7
+ ```
5
8
 
6
- 関数f(x)に対して、solve(f, m, M)はf(x)=0の解m<x<Mを返す。
7
- c=m+M2
8
-
9
- とするとき、
10
-
11
- f(c)>0ならば、解はmとcの間に存在し、
12
- f(c)<0ならば、解はcとMの間に存在する
13
- 事実を利用し、分割統治法(関数の再帰呼び出し)を利用する。】
9
+ ```def binary_search(key, L):
14
-
15
- コード
16
- def solve(f, m, M): # f(x)=0の解 m < x < M を求める
17
- c = (m + M)/2
18
- if M - m < 0.00001:
19
- return (m + M)/2
20
- elif f(c) == 0:
10
+ if len(L) == 1:
11
+ if L[0] == key:
21
- return c
12
+ return 0
13
+ else:
14
+ return -1
15
+ c = int(len(L)/2)
22
- elif f(c) > 0:
16
+ if key < L[c]:
23
- return # コードを1行埋めよ
17
+ return # コードを1行埋めよ
24
- elif f(c) < 0:
18
+ else:
25
- return # コードを1行埋めよ
19
+ i = # コードを1行埋めよ
26
-
27
- x = solve(f, 0, 1)
20
+ if i == -1:
28
- print(x)
29
- print(f(x))
21
+ return -1
30
- コード終わり
22
+ else:
31
-
23
+ return c + i
24
+ print(binary_search(701920, L))
25
+ print(binary_search(701921, L))
26
+ ```
32
27
  ・「#コードを1行埋めよ」の2か所を解くためのヒントが欲しいです。
33
28
 
34
29
 
@@ -39,7 +34,8 @@
39
34
  ### 発生している問題・エラーメッセージ
40
35
 
41
36
  ```
42
- エラメッセージ
37
+ 「#コドを1行埋めよ」の部分に return binary_serch(key,c-1)と書きましたがうまくいかず二つ目は一つ目が分からないため全く分かりませんでした。
38
+
43
39
  ```
44
40
 
45
41
  ### 該当のソースコード