设为首页 加入收藏

TOP

用栈实现递归函数的一个例子(C语言实现)
2014-11-24 02:01:51 来源: 作者: 【 】 浏览:0
Tags:实现 函数 一个 例子 语言

用栈实现递归函数的一个例子(C语言实现)


#include
#include
void *MemAlloc(unsigned int ulMemSize)
{
return malloc(ulMemSize);
}
void MemFree(void **ppvFree)
{
free(*ppvFree);
*ppvFree = 0;
}
/* 裴波那契数列非递归实现 */
/* 栈元素内存可以优化,在此不做优化, 仅仅供学习参考 */
unsigned int FibnoFunction(unsigned int ulNum)
{
unsigned int *pulStackBt;
unsigned int *pulStackTop;
unsigned int ulSumRet;
pulStackBt = MemAlloc(sizeof(unsigned int)*(ulNum+ 1));
if (pulStackBt == 0)
{
return -1;
}
/* 初始化栈 */
pulStackTop = pulStackBt + ulNum;
pulStackTop[0] = 0;
if (ulNum > 0)
{
pulStackTop[-1] = 1;
}
/* 依次出栈 */
while (pulStackTop > pulStackBt + 1)
{
pulStackTop[-2] = pulStackTop[-1] + pulStackTop[0];
pulStackTop--;
}
ulSumRet = *pulStackBt;
MemFree(&pulStackBt);
return ulSumRet;
}
int main(int args, unsigned char **ppargs)
{
unsigned int ulFebSum = 0;
for (ulFebSum = 0; ulFebSum < 15; ulFebSum++)
{
printf("FibnoFunction(%u) = %u\r\n", ulFebSum, FibnoFunction(ulFebSum));
}
return 0;
}


相关阅读


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Ubuntu 13.04 编译环境配置及Andr.. 下一篇Android手机上判断网络运营商

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: