递归作业求助, 实在想不出来了, 来这里请高手帮忙(200分)

  • 主题发起人 主题发起人 sowen
  • 开始时间 开始时间
S

sowen

Unregistered / Unconfirmed
GUEST, unregistred user!
已知道有 list.h
里面有以下几个方法
list cons(char elem, list lst);
//新建一个list,如: newlist=cons('c',null());
list tail(list lst);
//除了list第一个元素外其他部分,其实就是类似next
char head(list lst);
//返回该list第一个元素
list null();
//返回一个空list
int isNull(list lst);
//判断是否为空
不能用 loop, 赋值 等操作, 只能用 递归. 不要问我为什么要这样, 这是 这次作业functional language 的要求, 我也很痛苦.
需要完成的是一个电话号码对英文的匹配,
比如
1=1
2=ABC
3=DEF
4=GHI
5=JKL
6=MNO
7=PRS
8=TUV
9=WXY
0=0

输入 1234 的话, 可以输出所有的匹配组合, 例如 :
1ADG
1ADH
1ADI
如此类推.
这个东西如果可以使用 loop 和赋值那些功能倒不难做, 可是这次作业的要求是不能使用那些东西, 只能允许用递归. 比如有一个方法叫
void generateLetters(list l);

一个方法叫 list getNumbers(7);
取7个电话号码
然后只能一行完成整个输出
generateLetters(getNumbers);
当然我自己还写了几个方法用于输出和输入.
我已经想了几天了, 实在摆弄不出来. 我最多, 假如输入 222, 只能输出
AAA
AAB
AAC
这样, 一到 pos=2 的时候就很麻烦了.
有人能给点建议吗? 谢谢 [:(]
 
我有点儿看不懂的哦。
特别是举例的那一段。
 
问题已经解决了 [:D]
 
后退
顶部