Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101599
  • 博文数量: 18
  • 博客积分: 681
  • 博客等级: 中士
  • 技术积分: 295
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-17 13:33
文章分类
文章存档

2012年(8)

2011年(10)

分类: Python/Ruby

2012-09-16 20:24:54

在Erlang中没有类似while,for这样的循环语句,需要使用递归来替代。在循环中使用递归主要有以下两种方法,详细情况请参考,下面以一段对列表求和的函数来说明:

方法一

方法二

示意代码:

sum([]) ->

        0;

sum([H|T]) ->

        H + sum(T).

示意代码:

sum(List) ->

        sum_help(List, 0).

sum_help([], Sum) ->

        Sum;

sum_help([H|T], Sum) ->

        sum_help(T, H + Sum).

求和步骤:

sum([1,2,3,4,5])

1 + sum([2,3,4,5])

1 + 2 + sum([3,4,5])

1 + 2 + 3 + sum([4,5])

1 + 2 + 3 + 4 + sum([5])

1 + 2 + 3 + 4 + 5 + sum([])

1 + 2 + 3 + 4 + 5 + 0

1 + 2 + 3 + 4 + 5

1 + 2 + 3 + 9

1 + 2 + 12

1 + 14

15

求和步骤

sum([1,2,3,4,5])

sum_help([1,2,3,4,5], 0)

sum_help([2,3,4,5], 1)

sum_help([3,4,5], 3)

sum_help([4,5], 6)

sum_help([5], 10)

sum_help([], 15)

15

要点:

1. 递归方法求和,程序简单容易理解;

2. 尾递归可以被编译器优化。

要点:

1. 使用一个额外参数来存放求和中间结果;

2. 效率高。


阅读(3371) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

最大行业软件2012-11-03 14:46:05

ISOGRAPH_AVSIM_V10.0

ADINA系列产品:
ADINA.V8.8.1

CROCODILE.TECHNOLOGY.V609  系统控制仿真软件

Esteco.modeFRONTiER.v4.3.0 20101110 优化设计

ETA系列:
ETA.CAD.Translator.v1.200704
ETA.VPG.v3.3 汽车整车仿真软件
ETA_DYNAFORM_V5.6(多语言版,包括中文)
(DYNAFORM 是ETA开发的用于板料成形模拟的软件包。针对板料冲压的工艺特点,开发了方便高效的前后处理器,极大地缩短

了模型准备的周期。求解器采用LS-DYNA,基于增量法有限元理论,分析结果准确可靠。DYNAFORM可以模拟预压边、拉延、翻

边、弯曲、多工步成形等工艺过程,能够预测板料起皱、拉裂、回