F 中關於遞迴的思考

2021-06-28 21:11:08 字數 414 閱讀 7992

做電腦錢整整幾個小時終於搞懂了f#中的遞迴!

終點是要把當前獲得的值,加入到記錄中並且傳遞到下一次的遞迴中。

附上一小段f# **

let originlist = newlist

let rec checkelemet originlist newlist=

match originlist with 

| head::tail -> checkelemet tail (list.filter(fun element -> element % 3 =0) newlist)

| -> newlist

**的意思是 原始和新列表完全相同。工作是將原始列表中能被三整除的的數字在新的列表中剔除。

重點:將已經剔除過元素的newlist 送到下一次的checkelement 的遞迴中!

關於遞迴的思考

之前有接觸過遞迴,看到別人寫的遞迴函式的 好生羨慕,怎麼就能寫這麼好呢?我怎麼就想不到這樣寫呢?如此等等。就拿fibonacci函式來說吧,乙個普通的函式可能這樣寫 def fib n if n 0 return 0 elif n 1 return 1 else return fib n 1 fib...

關於遞迴的一些思考

遞迴函式一般有兩種模式,請看下面。include define cutoff 3 void swap int a,int b void insertionsort int array,int len else array j 1 temp int median3 int a,int left,int...

演算法複習1 關於遞迴的思考

昨天在牛客上做了幾個遞迴的題目,分別是斐波那契數列,跳台階,跳台階,矩形覆蓋,這幾個題實際上是同乙個題。以下是題目 1.斐波那契數列 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 2.跳台階 乙隻青蛙一次可以跳上1級台階,也可以跳上2級...