黑马程序员技术交流社区

标题: 基础测试题目分享 斐波那契数列第n项 [打印本页]

作者: 麻木    时间: 2015-4-22 09:48
标题: 基础测试题目分享 斐波那契数列第n项
  1. /**
  2. *2.求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55。
  3. */

  4. #import <Foundation/Foundation.h>

  5. //1.定义一个斐波那契数列函数fibonacci,输入参数是第n项,返回项目是第n项的斐波那契数.

  6. NSInteger fibonacci(NSInteger n)
  7. {
  8.     //1.1这里我采用递归的方法来实现本函数
  9.     //1.1.1如果n小于1,强制把n赋值为1
  10.     if(n < 1) n = 1;
  11.    
  12.     //1.1.2如果当n等于1或者2的时候直接返回值1
  13.     if(n == 1||n ==2)
  14.     {
  15.         return 1;
  16.     }
  17.    
  18.     //1.1.3当为其他n值的时候,根据斐波那契数列的特点直接递归调用前两个斐波那契数的和即可
  19.     else
  20.     return fibonacci(n-1) + fibonacci(n-2);
  21.    
  22.     /*
  23.      1.2其实对于这个题目,因为斐波那契数列是一个固定的数组,在只需要求较小n项的情况下,
  24.      我比较倾向于直接定义一个数组 然后把斐波那契数列加进去,要用的时候直接查表就可以得到了。
  25.      */
  26. }

  27. int main(int argc, const char * argv[])
  28. {

  29.     @autoreleasepool {
  30.         //2.系统提示用户输入一个大于0的整数
  31.         NSLog(@"请输入一个区间为[1,30)的n值,n代表第n项斐波那契数,系统自动打印出该项的斐波那契数");
  32.         
  33.         //3.定义一个整型变量inputNumber
  34.         NSInteger inputNumber = 0;
  35.         
  36.         //3.1系统输入赋值给inputNumber
  37.         scanf("%d",&inputNumber);
  38.         
  39.         //4.输入数据安全性判定,如果输入n值不在区间[1,30),则提示用户重新输入
  40.         while(inputNumber < 1 || inputNumber >= 30)
  41.         {
  42.             //4.1屏幕输出信息提示用户输入数字不满足要求,需要重新输入
  43.             NSLog(@"输入n值的范围是[1,30),请重新输入");
  44.             
  45.             //4.2重新系统输入赋值给inputNumber
  46.             scanf("%d",&inputNumber);
  47.             
  48.         }
  49.         
  50.         //输出第n项的斐波那契数到屏幕
  51.         NSLog(@"第%d项的斐波那契数为%d",inputNumber,fibonacci(inputNumber));
  52.       
  53.       
  54.     }
  55.     return 0;
  56. }
复制代码

作者: 透亮心情    时间: 2015-4-22 12:05
这个是入学测试还是面试的?听说面试手写代码?这不是要人命嘛
作者: 傲弛天下    时间: 2015-4-22 12:38
同样想知道,面试时的编程题,会不会用纯C来编




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2