递归题目
来源:互联网 发布:2017最火的编程语言 编辑:程序博客网 时间:2024/06/07 12:14
问题:47个人围成一圈,并依次编号(1--47),从第一个数到5那个人就淘汰,又从接下来的那个人开始从1数起,数到5的那个人被淘汰。。。。。。最后剩下的人是谁?(即刚开始的他的编号是多少)
刚看到这个题目的时候,最先想到的应该是循环,在我想这也应该是人类思维最容易想到的,
#include<stdio.h>int taotai(int N,int k){ int man[1000];//存放猴子 int i,j=0,p; for(i=0;i<N;i++) man[i]=i+1; for(i=0;i<N;i++) { p=0; for(;p<k;) { for(;man[j]==0;) j=(j+1)%N; p++; j=(j+1)%N; } j--; if(j<0) j=N-1; if(i==N-1) return man[j]; man[j]=0; }}int main(){ int N,k; printf("pls input N,and k\n"); scanf("%d%d",&N,&k); printf("the last left is :%d\n",taotai(N,k)); return 0;}
循环横容易理解,就是每次把淘汰的人所在数组元素标记为零,下次循环跳过元素为零的,最终就能得到那个最后淘汰的【有个缺点,就是浪费时间,应该能用链表完成,现在对链表不太熟悉,先用数组完成】
下面是运用递归完成:
#include<stdio.h>int taotai(int N,int k){// 每次运行都返回当前淘汰出来的位置int x;if(N==1)// 当剩下最后一个的时候他就是获胜者x=1;else {// 如果多余一个x=(taotai(N-1,k)+k)%N;// 继续从剩余的这些人中进行选取获胜(%n达到了循环的目的)(这里利用n-1时的淘汰位置加上k是下一个淘汰位置, 此时n又被减少)if(x==0)x=N;}return x;}int main(){int N,k;printf("pls input the total number and the skip number)\n");scanf("%d %d", &N, &k);printf("the one left:%d\n", taotai(N, k));return 0;}
递归和循环本质上是一样的,,,,可递归不太好理解
问题描述
菲波那契数列是指这样的数列:数列的第一个和第二个数都为 1,接下来每个数都
等于前面 2 个数之和。给出一个正整数 a,要求菲波那契数列中第 a 个数是多少。
输入数据
第 1 行是测试数据的组数 n,后面跟着 n 行输入。每组测试数据占 1 行,包括一个
正整数 a(1 <= a <= 20)。
输出要求
n 行,每行输出对应一个输入。输出应是一个正整数,为菲波那契数列中第 a 个数
的大小。
输入样例
4
5
2
19
1
输出样例
5
1
4181
1
解题思路:这个题目要求很明确,因为 a 的规模很小,所以递归调用不会产生栈溢
出的问题。设第 n 项值为 f(n),则 f(n) = f(n-1)+f(n-2)。已知 f(1)=1,f(2)=1,则从第3
项开始,可以用公式求。
比较简单,下面是我修改的:
#include<stdio.h>int f(int a){ if(a==1||a==2)return 1; return f(a-1)+f(a-2);}int main(){ int n,i,a; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a); printf("%d\n",f(a)); } return 0;
}
- 递归题目
- 递归几种题目
- 递归的小题目
- Java递归相关题目
- 简单的递归题目
- 递归的小题目
- 腾讯的递归笔试题目
- 一个经典的递归题目
- 递归经典初级题目--汉诺塔
- 递归的几个简单题目
- 一道考递归的题目
- 递归和回溯题目四则
- acm之递归题目1
- acm之递归题目2
- acm之递归题目3
- acm之递归题目4
- acm之递归题目5
- acm之递归题目6
- 布局参数
- 计算机操作系统调度算法,C++实现FSFS,SJF,RR,多级反馈队列算法
- android studio使用教程
- 高性能服务器
- Android之Activity学习
- 递归题目
- BCC 校验算法 (java)
- 32位Win7上装Oracle10g 32位和64位Win7上装Oracle10g 64位
- wamp 开启伪静态 .htaccess 重写
- iOS笔试
- imageview中判断图片的实现
- Android Studio 安装后无法打开 及下载地址
- java集合类总结
- 结合程序理解activity的生命周期