求怎么写记忆化递归
查看原帖
求怎么写记忆化递归
1810496
Scalue楼主2025/8/2 16:51

刚刚上传的帖子没检查 已删除 抱歉 再次请教大佬怎么写记忆化递归

#include <bits/stdc++.h>
using namespace std;
int a[10086];
int f(int n){
    if(n==1||n==2) return 1;
    else a[n]=f(n-1)+f(n-2);
    return a[n];
}
bool prime(int n){
    if(n==2) return true;
    for(int i=2;i*i<=n;i++){
        if(n%i==0) return false;
    }
    return true;
}
void p(int n){
    int cnt=0;
    for(int i=2;i<=n;i++){
        while(n%i==0){
        if(n%i==0 && prime(i)) {
            if(cnt==0){
             cout<<i;
             cnt++;
            }
            else cout<<"*"<<i;
        }
        n/=i;
        }
    }
}
int main(){
    int n,sum;
    cin>>n;
    sum=f(n);
    cout<<sum<<"=";
    p(sum);
    
}
2025/8/2 16:51
加载中...