(1)Fibonacci 数列的递归算法的实现。
要求:输入 n;
输出数列第 n 个数列的值。
(2)Fibonacci 数列的非递归算法的实现。
要求:输入 n;
输出数列第 n 个数列的值。
(3)集合全排列问题的递归算法的实现。
要求:输入数组 list[]={1,2,3,4,5,6};
输出数组 list 相应元素 1-4 的全排列。
(4)没有重复元素的整数划分问题的递归算法的实现。
大学时的代码,话不多说,直接上代码。
(1)Fibonacci 数列的递归算法的实现。
#include<stdio.h>
int fib(int n)
{
if(n<=1)
return 1;
else
return fib(n-1)+fib(n-2);
}
int main(){
int n;
printf("请输入要输出的数值n:\n");
scanf("%d",&n);
printf("数列的第%d个值为:%d\n",n,fib(n));
return 0;
}
运行结果如下图:
(2)Fibonacci 数列的非递归算法的实现。
#include<stdio.h>
int fib[1000];
void fib1(int n)
{
fib[0]=1;
fib[1]=1;
for(int i=2;i<=n;i++)
fib[i]=fib[i-1]+fib[i-2];
}
int main(){
int n;
printf("请输入要输出的数值n:\n");
scanf("%d",&n);
fib1(n);
printf("数列的第%d个值为:%d\n",n,fib[n]);
return 0;
}
运行结果为:
(3)集合全排列问题的递归算法的实现。
#include <iostream>
using namespace std;
void permutation(int list[], int begin, int end)
{
int i;
if(begin == end){
for(i = 0; i <= end; ++i){
cout<<list[i]<<" ";
}
cout<<endl;
} else
for(i = begin; i <= end; ++i) {
swap(list[i], list[begin]);
permutation(list, begin + 1, end);
swap(list[i], list[begin]);
}
}
int main()
{
int list[] = {1, 2, 3, 4, 5};
permutation(list, 0,3);
return 0;
}
运行结果如下图:
(4)没有重复元素的整数划分问题的递归算法的实现。
#include <iostream>
using namespace std;
int split(int n,int m)
{
if(n==1||m==1) return 1;
else if (n<m) return split(n,n);
else if(n==m) return split(n,n-1)+1;
else return split(n,m-1)+split(n-m,m);
}
int main(){
cout<<"请输入待拆分的正整数的数值:"<<endl;
int n;
while(cin>>n)
{
cout<<n<<"的划分数为:"<<split(n,n)<<endl;
return 0;
}
}
运行结果如下图:
初次发博客,希望对你有所帮助,若有不足,请见谅!