Chinaunix首页 | 论坛 | 博客
  • 博客访问: 156867
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2017-02-28 08:37
个人简介

没有绝活,怎能风骚.....

文章分类

全部博文(31)

文章存档

2017年(31)

我的朋友

分类: C/C++

2017-04-20 23:29:39

    当我们拿到这样一道面试题目的时候,都会觉得不是很难,但是一下子把代码写出来, 可能部分同学对递归还不熟悉,也有部分同学对如何通过简单的循环去实现有疑问,下面通过代码为有疑问的同学进行解答,有不对的,也希望大牛在评论中指出。
    其实递归说白了就是不断地调用自身,不断调用自身不能出现死循环,所以必须要有递归结束条件。

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. //递归
  3. int F_recursion(int n)
  4. {
  5.     if(0 == n || 1 == n)//递归结束条件
  6.     {
  7.         return 1;
  8.     }
  9.     return F(n-1) + F(n-2);
  10. }

  11. //循环
  12. int F_circulation(int n)
  13. {
  14.     int f0 = 1;
  15.     int f1 = 1;
  16.     int i = 2;
  17.     int ret = 0;
  18.     for(;i <= n;i++)
  19.     {
  20.         ret = f0 + f1;
  21.         f0 = f1;
  22.         f1 = ret;
  23.     }
  24.     return ret;
  25. }

  26. int main(int argc, const char *argv[])
  27. {
  28.     int n = 5;
  29.     printf("%d\n",F_recursion(5));
  30.     printf("%d\n",F_circulation(5));
  31.     return 0;
  32. }
    程序输出结果为:8.
    
阅读(3667) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~