erlang基础练习-编程指南习题部分解答
2012-09-10 09:08
916 查看
-module(letme). -export([sum/1,sum2/2,lists/1,lists2/1,even/1,filter/2,reverse/1,concatenate/1,flatten/1]). %编写一个函数sum/1,给定一个正整数N,其返回的是1~N的整数和。 %例如: sum(5) => 15. sum(1) -> 1; sum(N) -> N + sum(N-1). %编写一个sum/2,函数,给定两个整数N和M,其中N =< M,其返回的是N~M的整数和。如果N>M,进程异常终止。例如 sum(1,3) => 6. sum(6,6) => 6. sum2(M,M) -> M; sum2(N,M) when N=<M -> sum2_2(N,M,0). sum2_2(M,M,B) -> B+M; sum2_2(N,M,B) -> sum2_2(N+1,M,B+N). %编写一个返回格式为[1,2,3,...N-1,N]的列表的函数。 %例如 create(3) =>[1,2,3]. lists(Number) -> lists(Number,1,[]). lists(0,_S,L) -> L; lists(Number,Start,L) -> lists(Number-1,Start+1,[Number|L]). %编写一个函数返回格式为[N,N-1,..3,2,1]的列表的函数。 %例如 reverse_create(3) =>[3,2,1]. lists2(Number) -> lists2(1,Number,[]). lists2(_S,0,L) -> L; lists2(Start,Number,L) -> lists2(Start+1,Number-1,[Start|L]). %编写一个打印出1~N的偶数的函数。 even(N) -> [X|| X<-lists(N),X rem 2 =:=0]. %编写一个函数,给定一个整数和一个整数列表,并且返回所有小于或等于该整数的整数。 %例如 filter([1,2,3,4,5],3) =>[1,2,3]. filter(L,E) -> filter(L,E,[]). filter([],E,R) -> reverse(R); filter([H|T],E,R) -> case H =:= E of true -> filter([],E,[H|R]); false ->filter(T,E,[H|R]) end. %编写一个函数,给定一个列表,颠倒其中元素的顺序进行排列。 %列如 reverse([1,2,3]) =>[3,2,1]. reverse(L) -> reverse(L,[]). reverse([],R) -> R; reverse([H|T],R) -> reverse(T,[H|R]). %编写一个函数,给定一个列表的列表,将它们连接起来。 %列如 concatenate([[1,2,3],[],[4,five]]) => [1,2,3,4,five]. concatenate([]) -> []; concatenate(L) -> concatenate_1(L,[]). concatenate_1([],R) -> reverse(R); concatenate_1([H|T],R) -> if T == [[]] -> concatenate_1([],[H|R]); T == [] -> concatenate_1([],[H|R]); T -> concatenate_2(H,T,R) end. concatenate_2([],[],R1) -> concatenate_1([],R1); concatenate_2([],T,R1) -> concatenate_1(T,R1); concatenate_2([H1|T1],T,R1) -> concatenate_2(T1,T,[H1|R1]). %终极实现上面的结果!!! %列表解析真的很强大!!! %concatenate(L) -> % [X|| Y <- L, Y =/= [],X <-Y]. flatten(L) -> flatten_1(L,length(L)). flatten_1(L,0) -> L; flatten_1(L,Num) -> Result = concatenate(L), flatten_1(Result,Num-1). %快速排序 qsort([H|T]) -> qsort([X||X<-T,X =< T])++[H]++qsort([X||X<-T,X>H]).
相关文章推荐
- 《linux c 编程一站式学习》课后部分习题解答(一)
- 七周七语言 Erlang第一天编程习题解答
- 《linux c 编程一站式学习》课后部分习题解答
- 《linux c 编程一站式学习》课后部分习题解答
- 3D编程指南第三部分:粒子系统和立即模式渲染(2)
- Accelerated C++:通过示例进行编程实践——习题解答(第1章)
- 【练习】PTA基础编程题目集
- SQL Server 开发指南---基础编程
- libuv 中文编程指南(二)libuv 基础
- MySQL存储过程编程教程读书笔记-第二章MySQL存储过程编程指南-存储过程部分
- 数分一(大一) 练习题1.2-部分习题解答
- 算法导论第二章部分习题自我解答
- Accelerated C++:通过示例进行编程实践——练习解答(第12章)
- 《Erlang 程序设计》练习答案 -- 第八章 顺序编程补遗
- Accelerated C++:通过示例进行编程实践——练习解答(第1章)
- 【openjudge 计算概论(A)】[基础编程练习(控制成分)]
- Winsock编程 基础部分 第一篇
- 算法竞赛入门经典第三章总结(2):后半部分习题解答
- Linux Unix shell 编程指南学习笔记(第二部分)
- C++ Primer Plus第六版编程练习11.5解答