乙個簡單的lisp遞迴函式

2021-10-04 07:17:29 字數 556 閱讀 3566

(defun mystery (x y)

(if (null y)

nil

(if (eql (car y) x)

0

(let ((z (mystery x (cdr y))))

(and z (+ z 1))))))

如果我們>(mystery 6 ( 019365))的話,就返回4。這個函式就是接受乙個實參和乙個列表,返回列表中第乙個和實參相等的元素前面有幾個元素,如果列表是nil,就返回nil。我們可以詳(mo)細(ji)的說說這個函式的工作。

就拿(6 019365)來舉例,首先y不是null所以執行下面的if,car y 和x 也不相等所以用let把(mystery cdr y)的值賦給z,再次呼叫mystery函式。

那麼賦給z的值是多少呢?

乙個遞迴函式的分析

include include void pp char int char str abc int main void pp char s,int k else pp str 0 print當前的str pp str 1 pp str 0 print當前的str 結束pp呼叫 pp str 2 pp...

乙個簡單的遞迴演算法的思考

一 遞迴演算法的概述 遞迴演算法的描述 把乙個大規模的問題劃分為乙個個小規模的同類問題的子問題。遞迴演算法的特徵 1 在函式中呼叫其本身 2 必須有乙個明確的遞迴出口 3 遞迴結果的輸出是乙個堆疊結構,最後的結果最先輸出,最初的結果最後輸出。二 乙個簡單的遞迴演算法的思考 思考一 遞迴語句最後的輸出...

乙個簡單損失函式

損失函式 刻畫當前 值和真實值之間的差距。import tensorflow as tf 定義損失函式 交叉熵 說明 1.tf.clip by value v,a,b 函式 將乙個張量中的數值限制在乙個範圍之內。本部落格有具體講解。2.tf.log函式 對張量中所有元素依次求對數 3.y tf.lo...