F#中的反向递归

时间:2013-09-15 14:21:54

标签: recursion f# reverse

(我不确定反向递归是否是正确的名称..)

我想定义一个递归函数,初始值为k = n,终止于k = 0

所以我试着用这种方式写(这里n = 10):

let rec f k =
  match k with
  |_ when k > 10 -> 0
  |  10 -> 1
  |_ -> (f n+1)-1

并且VS崩溃了。有谁可以帮助我?

分界线------------------

我认为我的问题有点像这样:

Consider a sequence with 
a(10) = 1 
a(k) = [a(k+1)*a(k+1)] + 1
a(k) = 0 if (k < 0 or k > 10)

我怎样才能在F#中实现它?

1 个答案:

答案 0 :(得分:1)

let rec f k =
  match k with
  |_ when k > 10 || k < 0 -> 0
  | 10 -> 1
  |_ -> f (k+1) * f (k+1) + 1