解题思路

这道题诠释了杨辉三角中组合之间的规律, 即Cmn = Cm-1n-1 + Cmn-1, 而杨辉三角本身与二项式展开式系数也有密切的联系~

解题关键是:

根据组合的公式 Cmn = n!/(m!(n-m)!) 那么Cm-1n = n!/((m-1)!(n-m+1)!)

推导出 Cmn = Cm-1n * (n - m + 1)/m, 即每一行的后一个元素等于前一个元素*(总个数 - 当前索引 + 1)/ 当前索引, 已知第一个元素为1, 则可推导出整行的值。

代码

-spec get_row(RowIndex :: integer()) -> [integer()].
get_row(RowIndex) ->
	do_get_row(1, #{pre => 1, nums => [1], row_index => RowIndex}).

do_get_row(N, Args = #{pre := PreNum, nums := Nums, row_index := RowIndex}) when N =< RowIndex ->
	Num = PreNum * (RowIndex - N + 1) div N,
	do_get_row(N + 1, Args#{pre := Num, nums := [Num | Nums]});
do_get_row(_, #{nums := Nums}) ->
	lists:reverse(Nums).