15f9996aaSopenharmony_ci/*
25f9996aaSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
35f9996aaSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
45f9996aaSopenharmony_ci * you may not use this file except in compliance with the License.
55f9996aaSopenharmony_ci * You may obtain a copy of the License at
65f9996aaSopenharmony_ci *
75f9996aaSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
85f9996aaSopenharmony_ci *
95f9996aaSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
105f9996aaSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
115f9996aaSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
125f9996aaSopenharmony_ci * See the License for the specific language governing permissions and
135f9996aaSopenharmony_ci * limitations under the License.
145f9996aaSopenharmony_ci */
155f9996aaSopenharmony_ci
165f9996aaSopenharmony_ci#include <iostream>
175f9996aaSopenharmony_ci
185f9996aaSopenharmony_cistatic const uint32_t ip_idx = 1;
195f9996aaSopenharmony_ci
205f9996aaSopenharmony_ciusing namespace std;
215f9996aaSopenharmony_ci
225f9996aaSopenharmony_cinamespace {
235f9996aaSopenharmony_ciuint32_t fact(uint32_t ip)
245f9996aaSopenharmony_ci{
255f9996aaSopenharmony_ci    if (ip == ip_idx) {
265f9996aaSopenharmony_ci        return ip;
275f9996aaSopenharmony_ci    } else {
285f9996aaSopenharmony_ci        return ip * fact(ip - ip_idx);
295f9996aaSopenharmony_ci    }
305f9996aaSopenharmony_ci}
315f9996aaSopenharmony_ci}  // namespace