int列表的累计和

问题描述 投票:0回答:2

我为累积总和实现了以下功能:

fun cumsum_reverse (xs: int list) = 
  if null xs then [0]
  else
    let val tl_cumsum = cumsum_reverse (tl xs)
    in
      hd xs + hd tl_cumsum :: tl_cumsum
    end

fun reverse (first: int list, second: int list) =
  if null first
  then
    second
  else
    reverse (tl first, hd first :: second)

fun cumsum (xs: int list) = 
  tl(reverse(cumsum_reverse(reverse(xs, [])), []))

测试用例:

val test = cumsum[1,4,20] = [1,5,25]

有没有办法只使用一个函数来实现它?

recursion functional-programming sml smlnj
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.