ナラヤナの牛数列計算
ナラヤナの牛数列の項を、添字0から97まで求められます。N(10)は28で、各項は直前の項と3つ前の項の和、つまり19と9を足した値です。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- N
- 10
- 値
- 28
- 配列
- Narayana's cows
- 漸化式
- N(0)=N(1)=N(2)=1; N(n)=N(n-1)+N(n-3) for n>=3
ナラヤナの牛数列は、成長した牛が毎年1頭の子牛を産み、子牛も一定期間後に繁殖を始める群れを表します。標準的な0始まりの定義では、最初の3項はすべて1で、それ以降は1つ前と3つ前の項を足します。この計算機は非負の添字に対する正確な1項を返し、採用した初期値と漸化式も明示します。課題の確認、プログラムの検証、Fibonacci数列やPadovan数列との取り違え防止にご利用いただけます。
数列と添字の規約を確認します
この計算機ではN(0)=1、N(1)=1、N(2)=1を採用します。n>=3ではN(n)=N(n-1)+N(n-3)です。つまり、直前の項と3つ前の項を加えて次の値を求めます。
先頭は1, 1, 1, 2, 3, 4, 6, 9, 13, 19, 28となります。たとえばN(6)=N(5)+N(3)=4+2=6です。資料によっては同じ値を1番目から数えるため、初期値の明示が重要です。
応答にはnと完全な漸化式が含まれ、規約を確認できます。負の添字は標準でない逆方向への拡張を推測せず、入力エラーになります。
添字を送信して応答を読み取ります
nには0から97までの非負整数を指定してください。別名indexも使用できます。成功時には、正規化したn、求めた数を示すvalue、数列名のsequence、初期値と規則を示すrecurrenceが返ります。"
10"のような整数文字列は10に変換されます。小数、空欄、任意の文字列、負数、上限超過は拒否されます。N(97)はJavaScriptの安全な整数範囲で正確に表せる最後の項です。
計算は3個の値だけを保持し、加算は最大95回です。外部の表、サービス、モデルは利用しません。
授業やテストで結果を活用します
この数列は、初期条件と参照位置が漸化式を決める仕組みの説明に適しています。n、N(n-1)、N(n-3)、N(n)の表を作り、各行を照合できます。自動テストでは値だけでなく添字と規則も検証すると、誤った位置を加えてPadovan数列やFibonacci型の値を出す実装を発見しやすくなります。
別資料が3個の1を1番目、2番目、3番目としている場合は、表示位置を1つずらして比較してください。本機能は負の添字への拡張や任意精度の巨大な項には対応しません。
活用例
漸化式の課題を確認します
手計算した項を、初期値・添字・規則が明記された正確な結果と比較できます。
実装を検証します
既知の出力を使い、ループ、動的計画法、数列ライブラリーをテストできます。
遅延のある個体数増加を示します
3段階の遅れがFibonacciとは異なる増加を生む様子を説明できます。
よくある質問
ナラヤナの牛数列とは何ですか?
ここではN(0)=N(1)=N(2)=1、n>=3でN(n)=N(n-1)+N(n-3)となる数列です。
添字は0と1のどちらから始まりますか?
0から始まり、N(0)、N(1)、N(2)はすべて1です。資料によっては同じ値がずれて表示されます。
最大の添字が97なのはなぜですか?
N(97)がJavaScriptの安全な整数として正確に保持できる最後の項だからです。
ナラヤナの牛数列のN(10)はいくつですか?
N(10)は28です。N(9)の19とN(7)の9の和で、直前の項と3つ前の項を足しています。
数列の最初の項は何ですか?
添字0から数えると、1, 1, 1, 2, 3, 4, 6, 9, 13, 19, 28と始まります。最初の3項はすべて1で、それ以降は同じ規則で続きます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/narayana-cows \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":10}'const res = await fetch("https://api.kit.forhosting.com/numth/narayana-cows", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/narayana-cows",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/narayana-cows", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/narayana-cows", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"n": 10
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.narayana_cows",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
数列と添字の規約を確認します
整数の正確な加算だけを使うため、ブラウザーとAPIで再現可能な結果が得られます。
添字を送信して応答を読み取ります
有効なAPI実行は1回$0.002で、ブラウザー版も同じ純粋関数を端末内で実行します。
技術的な質問
nが負の場合はどうなりますか?
invalid_inputを返します。本機能では逆方向への拡張を定義しません。
APIリクエストの料金はいくらですか?
成功した1回は$0.002です。ブラウザー計算機は同じ処理を端末内で実行します。